Hibernate 注解注册
来源:互联网 发布:撮合交易平台源码 编辑:程序博客网 时间:2024/06/01 09:19
注解注册:
hibernate注解需要导入以下jar包:
hibernate-commons-annotations.jar
hibernate-annotations.jar
ejb3-persistence.jar
@Entity 定义实体类,表示该类可以通过注解进行操作
@Table(name="t_user2") 指明该实体类映射的数据库表名
@Id 表示定义主键,
@GeneratedValue(strategy=GenerationType.AUTO)定义主键生成策略,为数据库自动增长(AUTO 5.0不支持)
@GeneratedValue(strategy=GenerationType.IDENTITY) hibernate4.0,5.0均支持
@Column(name="productName")定义该属性对应的列名,如果属性名和列名一致可以不用写。
@Transient 表示该属性并非一个到数据库表的字段的映射
在hibernate.cfg.xml中注册注解类:
<mapping class="com.lovo.bean.ProductBean"/>
u编写测试类:
uConfiguration config =new AnnotationConfiguration().configure();
uSessionFactory factory = config.buildSessionFactory();
uSession session = factory.openSession();
usession.beginTransaction();
uProductBean bean = new ProductBean("张三",12,"898797");
usession.save(bean);
usession.getTransaction().commit();
usession.close();
Hibernate 注解一对一(外键关联)
从表方配置:
public class WifeBean {
@OneToOne //表示一对一@JoinColumn(name="husbandId",unique=true)
private HusbandBean husband;}name="husbandId"
name指明从表外键列名
unique=true为唯一约束,表示唯一外键关联
主表方配置:
public class HusbandBean { @OneToOne(mappedBy="husband")
private WifeBean wife;
}
mappedBy="husband"表示当前属性关联的从表对象的关联属性名。同时指明只有添加从表对象时,才添加外键列。相当于inverse=true
查询没有妻子的丈夫
select h from HusbandBean h left join h.wife w where w is null
Hibernate 注解一对多
一方配置:
@OneToMany(
fetch=FetchType.EAGER, targetEntity=HouseBean.class, cascade=CascadeType.ALL, mappedBy="person")
@JoinColumn(name="personId")
private Set houses = new HashSet();
fetch=FetchType.EAGER 指定是否延迟加载,值为FetchType.LAZY表示延迟,为FetchType.EAGER表示立即加载targetEntity=HouseBean.class集合中存放元素类型mappedBy="husband" 关联从表对象中的关联对象属性名。同时指明只有添加从表对象时,才添加外键列。相当于inverse=truecascade=CascadeType.ALL为级联操作@JoinColumn(name="personId")指明从表中的外键列名
多方配置:
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="personId")
private Person person;
@JoinColumn(name="personId")指明从表中的外键列名
Hibernate注解一对多。默认采用多方维护外键方式。相当于在一方set标签加入了 inverse="true"。
Hibernate注解多对多
u多方配置:
@ManyToMany(fetch=FetchType.LAZY,
targetEntity=TeacherBean.class)
@JoinTable(name="t_stu_tea",
joinColumns={@JoinColumn(name="studentId")},
inverseJoinColumns={
@JoinColumn(name="teacherId")})
private Set teacherSet;
u
uname="t_stu_tea",指明中间表名
ujoinColumns={@JoinColumn(name="studentId")当前对象对应中间表的外键列名
uinverseJoinColumns={@JoinColumn(name="teacherId")}指明多对多中另一个表的外键列名。
0 0
- Hibernate 注解注册
- hibernate 注解
- hibernate注解
- hibernate注解
- hibernate注解
- Hibernate注解
- Hibernate 注解
- Hibernate注解
- hibernate注解
- hibernate 注解
- hibernate注解
- hibernate注解
- Hibernate注解
- hibernate注解
- hibernate注解
- hibernate注解
- Hibernate 注解
- hibernate注解
- Runtime(运行时)
- gradle针对版本号的管理——任务模式,直接修改build.gradle文件
- 途客圈见面会-要点总结
- ORA-06511: PL/SQL: cursor already open
- Scala入门之OOP
- Hibernate 注解注册
- 标准Web系统的架构分层
- NSOperation 和 GCD 的区别
- 线性表的C语言实现
- 拦截器利用装饰类的对getParameter()和getParameterValues()方法的重写对中文编码的转换
- Deep Residual Network实验复现
- 关于tomcat 8080端口被占用
- jsp指令
- a++ + ++a