@Before public void init(){ Configuration configuration = new Configuration().configure(); ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()) .buildServiceRegistry(); sessionFactory = configuration.buildSessionFactory(serviceRegistry); session = sessionFactory.openSession(); transaction = session.beginTransaction(); } @After public void destroy(){ transaction.commit(); session.close(); sessionFactory.close(); } @Test public void test(){ //session.测试以下方法 如: User entity= new User("BBBB"); session.save(entity); }
-------------------- 基本检索、增加、修改、删除操作 --------------------
(1) 根据主键获取实体。如果没有相应的实体,返回 null。
get(entityClass, id);
(2)根据主键获取实体。如果没有相应的实体,抛出异常。
load(entityClass, id);
1. 执行 get 方法: 会立即加载对象.
执行 load 方法, 若不适用该对象, 则不会立即执行查询操作, 而返回一个代理对象
get 是 立即检索, load 是延迟检索.
2. load 方法可能会抛出 LazyInitializationException 异常
3. 若数据表中没有对应的记录, Session 也没有被关闭.
get 返回 null
load 若不使用该对象的任何属性, 没问题; 若需要初始化了, 抛出异常.
(3)更新实体。
update(entity);
(4)存储实体到数据库。
save(entity);
在调用 save 方法之前, 若对象已经有 id 了, 在 flush 缓存时会发送一条 INSERT 语句且 id 是无效的
(5)存储实体到数据库。
persist(entity);
在调用 persist 方法之前, 若对象已经有 id 了, 则不会执行 INSERT, 而抛出异常
(6)增加或更新实体。
saveOrUpdate(entity);
(7) 删除指定的实体。
delete(entity);
若 entity 在数据表中没有对应的记录, 则抛出异常
本文出自 “冰葫芦” 博客,请务必保留此出处http://shenlang7.blog.51cto.com/3102414/1743184
原文地址:http://shenlang7.blog.51cto.com/3102414/1743184