hibernate3.6-联合主键注解以及openSession和getCurrentSession区别
2024-08-26 04:59:33
【联合主键】
>>>>配置方式:xml:
1. Student中单独创建StudentPk主键实体类
2. 配置:
<composite-id name="studentPK">
<key-property name="name" column="username" />
<key-property name="nickname" column="nickname" />
</composite-id>
>>>>注解方式:annotation
1. Teacher中单独创建TeacherPk主键实体类
2.注解
** 注解方式1:【一个注解】※常用
<1>
@EmbeddedId
public TeacherPk getTeacherPk()
<2>主键类实现Serializable接口+重写hashCode和equals方法。
TeacherPk implements Serializable{
@Override
public int hashCode()
@Override
public boolean equals(Object obj)
}
**注解方式2:【两个注解】
<1>
@Embeddable
public class TeacherPk implements Serializable
@Id
public TeacherPk getTeacherPk()
<2>同上
【openSession和getCurrentSession区别】
1. openSession产生的实例是SessionImpl.class的实例;
getCurrentSession产生的是$Proxy代理类实例
2. openSession每次调用产生新的Session;
getCurrentSession在第一次调用时生成新的Session,之后关联到上下文,
在事务完成(commit/rollback)之前,每次得到的都是已经存在的Session,
直到事务提交或者回滚。
3. openSession的Session需要手动close();
getCurrentSession的会在事务完成(commit/rollback)时自动close。
4. openSession的可以直接使用。
getCurrentSession需要再hibernate的配置文件中配置current_session_context_class.。比如:
<property name="current_session_context_class">thread</property>
最新文章
- Lua 调用 Opencv 的方法
- scrollbar_test
- 本地Git仓库与Github远程仓库同步
- printf的一个常用技巧
- nefu 120 梅森素数
- 电脑右键新建文本文档(txt)消失的解决办法
- Umbraco中的权限体系结构
- slave_net_timeout
- NHibernate加载DLL错误
- 配置wamp开发环境【2】 配置wamp开发环境之mysql的配置
- html 选择器之属性选择器
- luogu P5305 [GXOI/GZOI2019]旧词
- MySQL -- 关闭 binlog
- 洛谷P1439 【模板】最长公共子序列
- Centos 编译 安装 criu
- 在eclipse中,使用spring tool suite配置spring环境
- bootStrap中的翻页效果
- JavaScript -基础- 函数与对象
- Flask源码阅读-第三篇(flask\_compat.py)
- 杂谈---LZ的编程之路以及十点建议
热门文章
- 手把手教你使用 Prometheus 监控 JVM
- fastadmin 增加批量操作字段 提示无权限
- hasura的golang反向代理
- 利用babel工具将es6语法转换成es5,Object.assign方法报错
- uc浏览器手机版,页面图片不显示
- zoookeeper集群和kafka集群启动快速启动脚本
- spring boot:thymeleaf给fragment传递参数的方法(spring boot 2.3.3)
- linux设置系统变量
- ansible用authorized_key模块批量推送密钥到受控主机(免密登录)(ansible2.9.5)
- Linux运维学习第四周记