@RestController
@Slf4j
public class JpaController {
@Autowired
DogRepository dogRepository;
@Autowired
UserRepository userRepository;
@Autowired
RoleRepository roleRepository;
@Autowired
PersonRepository personRepository;
@Autowired
BoneRepository boneRepository;
ObjectMapper objectMapper = new ObjectMapper();
ObjectWriter objectWriter = objectMapper.writerWithDefaultPrettyPrinter();
@Autowired
ManRepository manRepository;
@PersistenceContext
private EntityManager entityManager;
@PersistenceContext
private Session session;
/**
* 单向一对多
*
* @create: 2019-04-01
* @author: liu
**/
@RequestMapping("/findAllPhone")
public void findAllPhone() throws JsonProcessingException {
List<Man> all = manRepository.findAll();
System.out.println(objectWriter.writeValueAsString(all));
Session session = entityManager.unwrap(Session.class);
System.out.println(session.isOpen());
//保存对象 session.save();
// session.flush();
// Transaction transaction = session.beginTransaction();
// 开启事务
// transaction.commit();
// 返回持久化对象
// session.get() 返回null 直接命中数据库
// session.load(); 抛出异常 返回的是一个代理
// session.delete(); 将持久化对象变成瞬时 session 关闭之后就会变成一个普通的对象,被回收
session.close();
// session 关闭之后进行修改就成为了托管对象 ,可以通过update 来重新持久化该对象
// session.merge() 托管对象合并到持久化对象
/**
* 持久化上下文就是持久化对象的一个高速缓存
* 持久化状态中的每个对象都为出久化上下文所知
* 持久化上下文高速缓存从不自动收缩
* @create: 2019-04-03
* @author: liu
**/
// session.evict(); 将一个高速缓存中的对象进行托管
// session.clear(); 托管所有持久化实例
// session.setReadOnly(); 禁止对特定实例的脏检查,只读的实例,将不会维持快照
/**
* 工作单元结束时,所有的修改都与数据库进行同步,这个过程称为持久化上下文的清除
* - 事务被提交时
* - 执行查询之前
* - 显式的调用flush
*
* @create: 2019-04-03
* @author: liu
**/
// session.(); 来设置 同步行为的时机
// session.setFlushMode(FlushMode.ALWAYS);
// session.setHibernateFlushMode();
/**
* 创建EntityManager时,分配了一个新的持久化上下文,
* 可以在这个上下文中保存和加载对象
*
* @create: 2019-04-03
* @author: liu
**/
// session.persist(); 立即持久化 与save 不同的是,不回返回该实例,清除时被级联
// session.remove(); 移除一个实例,变为瞬时状态
// 托管 detached(分离) 对象持久化完毕之后,工作单元结束,不能保证该实例是否与数据库同步
// session 关闭时,持久化上下文终止
// NativeQuery nativeQuery = session.createNativeQuery("");
// nativeQuery.setParameter("");
/**
* 注入的EntityManager 由容器维护
* 持久化上下文由事务的范围决定,事务终止时,它也自动被清除和关闭
* @create: 2019-04-03
* @author: liu
**/
}
}
[Log] hibernate save the object
Guess you like
Origin blog.csdn.net/java_sparrow/article/details/89004756
Ranking