hibernate基本使用
配置好hibernate后
可以来测试一下
public static void main(String[] args) {
//创建对象
User user = new User();
user.setName("abc");
//获取加载配置管理类
Configuration configuration = new Configuration();
//不给参数就默认加载hibernate.cfg.xml文件,
configuration.configure();
//创建Session工厂对象
SessionFactory factory = configuration.buildSessionFactory();
//得到Session对象
Session session = factory.openSession();
//使用Hibernate操作数据库,都要开启事务,得到事务对象
Transaction transaction = session.getTransaction();
//开启事务
transaction.begin();
//把对象添加到数据库中
session.save(user);
//提交事务
transaction.commit();
//关闭Session
session.close();
}
这是基本的插入操作
调用了session的save方法
插入了一个user对象
那么我们现在把这边的获取session封装一下
public class DaoUtil {
public static Session session = null;
static {
//获取加载配置管理类
Configuration configuration = new Configuration();
//不给参数就默认加载hibernate.cfg.xml文件,
configuration.configure();
//创建Session工厂对象
SessionFactory factory = configuration.buildSessionFactory();
//得到Session对象
session = factory.openSession();
}
public static Session getSession() {
return session;
}
public static void closeSession() {
if (session != null) {
session.close();
}
}
}
现在我们可以通过静态方法getSession来获取session
简化了操作
获取到session后就可以操作数据库了
那么我们修改一下操作插入的代码
//创建对象
User user = new User();
user.setName("abc");
//获取session,开启transaction
Session session = DaoUtil.getSession();
Transaction transaction = session.beginTransaction();
//把对象添加到数据库中
session.save(user);
//提交事务
transaction.commit();
然后我们再来试试查询
我们先来查询所有的数据
Session session = DaoUtil.getSession();
Transaction transaction = session.beginTransaction();
Query query = session.createQuery("from User");
List<User> list = query.list();
transaction.commit();
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).toString());
}
然后再试试条件查询
Session session = DaoUtil.getSession();
Transaction transaction = session.beginTransaction();
Query query = session.createQuery("from User where name= :name");
query.setParameter("name", "abc");
List<User> list = query.list();
transaction.commit();
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).toString());
}
这里的语句和sql不太一样
from User where name= :name
User是bean类的类名
name= 后面接上 :name 查询名
然后serParameter("name","abc");
设置参数
name为abc