关于Hiberate的数据库操作(纯手打)

来源:互联网 发布:java 获取list的泛型 编辑:程序博客网 时间:2024/06/06 16:28

在配置Hibernate完成后,如何运用Hibernate进行数据库操作。

比如我的数据的一个表为user表,存储id、name、password、phone、adress字段。

已经创建好User.java类以及起映射关系。

此时创建类UserDao.java类,创建方法query()

//查找数据库信息

public void query() {

  String HQLString = "from User";
  Session session = HibernateSessionFactory.getSession();
  Query query = session.createQuery(HQLString);
  java.util.List list = query.list();
  for (Object o : list) {
   User u = (User) o;
   System.out.println(u.getName() + " " + u.getPassword());
  }

 }

这是提取数据库里user表中所有信息。

Session session = HibernateSessionFactory.getSession();获取session对象

Session接口不是jsp应用中的HttpSession,而是负责执行持久化对象的CRUD操作(任务是完成与数据库的交互),后续可能对Session有详细介绍。

Query query = session.createQuery(HQLString);
  java.util.List list = query.list();

在执行查询后query.list()返回List对象,存储获取的数据保存在list中,后面可以用迭代输出所有数据。

那如果查询后的数据是唯一的,不是获取所有信息,比如我HQLString为“select o from User o where o.name='aa'”

查询后就不能储存在list中了,我们可以直接User user=query.uniqueResult();这样获取的数据就直接放到User里了。

 

上述是查找,要是添加呢?

这是我们再添加一个方法

public void saveUser(User user) {
  Session session = null; // 创建一个事务
  Transaction transaction = null;
  try {
   session = HibernateSessionFactory.getSession();
   transaction = session.beginTransaction();
   session.save(user);
   transaction.commit();
  } finally {
   if (session != null) {
    session.close();
   }
  }
 }

方法中添加了事务。看来Hibernate是如此的简便。

同理我们再来个删除数据的方法

public void delUser(User user){
  Session session = null;
  try {
   session=HibernateSessionFactory.getSession();
   Transaction transaction=session.beginTransaction();
   session.delete(user);
   transaction.commit();
  } catch (Exception e) {
   // TODO: handle exception
   if (session != null) {
    session.close();
   }
  }
  
 }

只是换了一句,session.delete(user);

 

0 0
原创粉丝点击