Hibernate之N-1(注解实现,无连接表)
来源:互联网 发布:苏宁易购和淘宝哪个好 编辑:程序博客网 时间:2024/06/08 07:56
package com.javaee.book.hibernate;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.ManyToOne;import javax.persistence.Table;import org.hibernate.annotations.Cascade;import org.hibernate.annotations.CascadeType;@Entity//声明该类是一个Hibernate持久化类/** *@Table有5个属性 * name 设置持久化类所映射表的表名 * catalog 用于把持久化类放到指定的catalog(数据库),如果没有,则默认在配置文件指定的数据库 * uniqueConstraints 为持久化类所映射的表设置唯一约束 * indexes 为持久化类所映射的表设置索引 * schema 设置将持久化类所映射的表放在指定的scheme中 */@Table(name="person_inf")//指明Person对应的数据库表名public class Person { @Id//指定该类的标识属性,映射的表主键列 /** * @Column有十个属性 * name 列名(默认和成员变量名字相同) * length 数据最大长度 * columnDefinition 指定创建该数据列的SQL语句 * insertable 指定该列是否包含在Hibernate生成的insert语句的列中,默认true * nullable 指定该列是否乐为null,默认是true * precision 该列是decimal类型时,该属性指定该列支持的最大有效数字 * scale 该列是decimal类型时,该属性指定该列支持的最大小数位数 * table 指定该列所属的表名,当需要用多个表来保存一个实体时需要指定该属性 * unique 指定该列是否具有唯一约束,默认false * updatable 指定该列是否包含在Hibernate生成的update语句中,默认 true */ @Column(name="person_id") @GeneratedValue(strategy=GenerationType.IDENTITY)//指定主键生成策略 private Integer id; private String name; private int age; /**@ManyToOne四个属性 * targetEntity 指定关联的实体类的类名,默认Hibernate通过反射来判断关联类名 * cascade 指定Hibernate对关联实体采用怎样的级联策略 * CascadeType.ALL Hibernate所有持久化操作都级联到关联实体 * CascadeType.MEGE 指定Hibernate将merge操作到关联实体 * CascadeType.PERSIST 指定Hibernate将persist操作级联到关联实体 * CascadeType.REFRESH 指定Hibernate将refresh操作级联到关联实体 * CascadeType.REMOVE 指定Hibernate将remove操作级联到关联实体 * fetch 指定抓取关联实体的策略 * FetchType.EAGER 默认值 抓取实体时,立即抓取关联实体 * FetchType.LAAY 默认值 抓取实体时,延迟抓取关联实体 * optional; 指定关联关系是否可选 */ @ManyToOne(targetEntity=Address.class)//(N-1关联) @JoinColumn(name="address_id",nullable=false)//映射外键列,指定外键列列名是address_id,不允许为空 @Cascade(CascadeType.ALL) private Address address; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; }}
package com.javaee.book.hibernate;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.Table;@Entity@Table(name = "address_inf")public class Address { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int addressId; private String addressDetail; public Address() { // Hibernate调用 } public Address(String detail) { this.addressDetail = detail; } public int getAddressId() { return addressId; } public void setAddressId(int addressId) { this.addressId = addressId; } public String getAddressDetail() { return addressDetail; } public void setAddressDetail(String addressDetail) { this.addressDetail = addressDetail; }}
package com.javaee.book.hibernate;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.boot.MetadataSources;import org.hibernate.boot.registry.StandardServiceRegistry;import org.hibernate.boot.registry.StandardServiceRegistryBuilder;public class TestDemo { public static void main(String[] args) { //加载hibernate.cfg.cml文件 StandardServiceRegistry registry = new StandardServiceRegistryBuilder() .configure().build(); SessionFactory sessionFactory = new MetadataSources(registry) .buildMetadata().buildSessionFactory(); // 获取Session Session session = sessionFactory.openSession(); // 获取Transaction Transaction transaction = session.beginTransaction(); Person person = new Person(); Address address = new Address("GungZHou TianHe"); person.setAddress(address); person.setName("JeffWu"); person.setAge(21); // 持久化Person对象 session.persist(person); // 创建一个瞬态的Address对象 Address address2 = new Address("ShangHai HongKou"); person.setAddress(address2); transaction.commit(); session.close(); sessionFactory.close(); }}
0 0
- Hibernate之N-1(注解实现,无连接表)
- Hibernate 1-1(注解实现,基于外键列的单向无连接表)
- hibernate单向N-1无表连接级联
- hibernate单向无连接表1—N关系映射
- Hibernate 1-N单向关联(注解实现)
- Hibernate单向无连接表N-1关联的简单示例
- hibernate注解的实现原理之1
- 6.1.1 无连接表的单向N--->1关联
- Hibernate03(无连接表的单项1-N关联)
- Hibernate04(无连接表的双向1-N关联)
- hibernate单向1-1无表连接级联
- hibernate系列(1)之hibernate基本注解(全)
- hibernate注解的实现原理之2
- hibernate之1+N问题
- Hibernate之缓存,N+1
- Hibernate关联映射之-单向多对一关联(无连接表)
- 无连接表的双向1-n关联,和单项关联
- Hibernate之一对多(注解实现)
- 让Spark如虎添翼的Zeppelin – 基础篇
- 个人工作一年的一些经验
- c++基础
- laravel 数据库操作
- Windows下Nexus 5 改user模式为debug模式
- Hibernate之N-1(注解实现,无连接表)
- 引用于指针的区别
- 推荐一篇tarjan的神解释
- 2016/8/27
- Ajax与Json
- SHELL脚本语句 if、for、while、case 图示
- ubuntu16.04 开发软件 装机设置
- 并查集 POJ 1330
- Scanner和BufferReader用法详记