今天分享的是一对一 ,多对一,诺有不当之处请斧正。
一对一
思路:
1:第一步:
在Src/main/java中写entity包,注意:为两个实体类建立关系, 写get,set方法。
2:第二步:
写映射文件
主表:
例:
<hibernate-mapping>
<class name="com.entity.Ren" table="REN">
<id name="rid" type="int">
<column name="RID" />
<generator class="native" />
//native 自动增加
</id>
<property name="rname" type="java.lang.String">
<column name="RNAME" />
</property>
<!-- 一对一 cascade 是级联 属性有 下图有详细讲解 -->
<one-to-one name="ka" class="com.entity.Ka" cascade="all">
</one-to-one>
</class>
</hibernate-mapping>
从表:
<hibernate-mapping>
<class name="com.entity.Ka" table="KA">
<id name="rid" type="int">
<column name="RID" />
<generator class="foreign" >
<param name="property">ren</param>
</generator>
</id>
<property name="kname" type="java.lang.String">
<column name="KNAME" />
</property>
<one-to-one name="ren" class="com.entity.Ren"></one-to-one>
</class>
</hibernate-mapping>
3:第三步 在src/main/resources下
写hibernate.cfg.xml 文件
<!--读取映射文件-->
例子:
<mapping resource="com/entity/Ka.hbm.xml"/>
<mapping resource="com/entity/Ren.hbm.xml"/>
4;在src/test/java下写测试类
@Before
public void before(){
//通过DbHelper获取Connection
//通过配置文件获取session
//读取配置文件
Configuration configuration=new Configuration().configure();
sessionFactory = configuration.buildSessionFactory();
session = sessionFactory.openSession();
//开始事务
transaction = session.beginTransaction();
}
@After
public void after(){
//提交事务
transaction.commit();
//关闭资源
session.close();
sessionFactory.close();
}
//查询
@Test
public void query(){
Ren ren= (Ren) session.get(Ren.class,3);
System.out.println(ren.getKa().getRid());
}
//删
@Test
public void delete(){
Ren ren=(Ren) session.get(Ren.class,5);
session.delete(ren);
}
多对一:
1:第一步:
在Src/main/java中写entity包,注意:为两个实体类建立关系, 写get,set方法。
一
//一个类别对应多个电器
private Set<Product> product=new HashSet<Product>();
private Category category;
2:第二步
写映射文件
<!--多-->
<hibernate-mapping>
<class name="com.entity.Category" table="CATEGORY">
<id name="category_id" type="int">
<column name="CATEGORY_ID" />
<generator class="native" />
</id>
<property name="category_name" type="java.lang.String">
<column name="CATEGORY_NAME" />
</property>
<set name="product" cascade="save-update" >
<key>
<column name="category_id" />
</key>
<one-to-many class="com.entity.Product" />
</set>
<!-- 1 -->
<class name="com.entity.Product" table="PRODUCT">
<id name="product_no" type="int">
<column name="PRODUCT_NO" />
<generator class="native" />
</id>
<property name="product_name" type="java.lang.String">
<column name="PRODUCT_NAME" />
</property>
<property name="product_price" type="double">
<column name="PRODUCT_PRICE" />
</property>
<many-to-one name="category" class="com.entity.Category" column="category_id">
</many-to-one>
</class>
</hibernate-mapping>
</class>
</hibernate-mapping>
3:第三步 在src/main/resources下
写hibernate.cfg.xml 文件
与一对一类似!
4;在src/test/java下写测试类
不再啰嗦与一对一类似!
奉上图纸一张!