A 标签解析:
(1) dynamic-insert="false" 和 dynamic-update="false"
1.这两者的意思为,动态发送语句,如果为flase,session.get()查询得到后,进行update的话,那么所有的字段都将update(没有改变的不会动)
update
NEWS
set
TITLE=?,
AUTHOR=?,
DATE=?
where
ID=?
2.如果为true的话,将会动态发送sql
update
NEWS
set
AUTHOR=?
where
ID=?
两者的区别在sql语句中的set下面将会有体现,这个标签配置要和 update="true" 区别开
(2) outer-join="true" 和 fetch="join/select"
1.antype.class的外键是被引入的,设置了outer-join="true" lazy 的设置就失效,在查询antype的时候,就算session关闭了,dog.class也就被查出来了,并封装成了对象;
2.fetch定义的是两个关联对象的抓取策略,得到一个对象时怎么去得到另外一个对象,是通过连接查询(join)还是另外发起一条sql(select).
3.outer-join和fetch这两个是不冲突的.
4.如果设置了fetch="join",及时取出了另一个对象.如果设置了fetch="select",没有及时取出,session关闭,报错.
(3) cascade="all" 和 inverse="true"
1.cascade设置级联关系,如果设置了级联关系,当保存一个对象时,关联对象就被增删改查.
在删除时,如果没有断开级联的关系,所相关的所有数据就会被全部删除,改数据时,如果使用load get itartor 这些方法时,就会自动检查级联关系,如果用hql语句的话,是没有级 联关系的.
2. inverse 相当于在注解方法中的 mappedBy = "引入名" ,意义为反向管理,不会生成两个引入键的情况,表结构变为双向关联.
(4) composite-id 用于生成联合主键的标签,内部标签有两个,如果引入别的表的键,要用<many-to-one>配置类,如果单纯的联合主键,用<key-property>配置.
(5) component 分割表时用的标签.
B 源代码:
(1) one-to-one 主键依赖外表的主键
idcard.class
package com.bean;
public class idcard {
private String pid;
private String iname;
private person person;
public String getPid() {
return pid;
}
public void setPid(String pid) {
this.pid = pid;
}
public String getIname() {
return iname;
}
public void setIname(String iname) {
this.iname = iname;
}
public person getPerson() {
return person;
}
public void setPerson(person person) {
this.person = person;
}
public idcard() {
}
}
person.class
package com.bean;
public class person {
private String pid;
private String pname;
private idcard idcard;
public idcard getIdcard() {
return idcard;
}
public void setIdcard(idcard idcard) {
this.idcard = idcard;
}
public String getPid() {
return pid;
}
public void setPid(String pid) {
this.pid = pid;
}
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}
public person() {
}
}
idcard.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.bean.idcard" table="new.idcard" >
<id column="pid" name="pid" type="string">
<generator class="foreign">
<param name="property">person</param><!--这种情况是该表的主键是引用了person的主键生成的-->
</generator>
</id>
<property name="iname" column="iname" type="string"></property>
<one-to-one name="person" class="com.bean.person" ></one-to-one>
</class>
</hibernate-mapping>
person.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.bean.person" table="new.person" >
<id column="pid" name="pid" type="string">
<generator class="uuid"></generator>
</id>
<property name="pname" column="pname" type="string"></property>
<one-to-one name="idcard" class="com.bean.idcard" ></one-to-one>
</class>
</hibernate-mapping>
(2) many-to-one
package com.bean;
import java.util.Set;
public class antype {
private String aid;
private String aname;
private Set<dog> dog;
public Set<dog> getDog() {
return dog;
}
public void setDog(Set<dog> dog) {
this.dog = dog;
}
public String getAid() {
return aid;
}
public void setAid(String aid) {
this.aid = aid;
}
public String getAname() {
return aname;
}
public void setAname(String aname) {
this.aname = aname;
}
public antype() {
}
public antype(String aid, String aname) {
this.aid = aid;
this.aname = aname;
}
}
package com.bean;
public class dog {
private String did;
private String dname;
private antype antype;
public String getDid() {
return did;
}
public void setDid(String did) {
this.did = did;
}
public String getDname() {
return dname;
}
public void setDname(String dname) {
this.dname = dname;
}
public antype getAntype() {
return antype;
}
public void setAntype(antype antype) {
this.antype = antype;
}
public dog() {
// TODO Auto-generated constructor stub
}
public dog(String did, String dname, antype antype) {
this.did = did;
this.dname = dname;
this.antype = antype;
}
}
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.bean.antype" table="new.antype" >
<id column="aid" name="aid" type="string">
<generator class="uuid"></generator>
</id>
<property name="aname" column="aname" type="string" ></property>
<set name="dog" table="new.dog" lazy="true" inverse="true">
<key column="aid"></key>
<one-to-many class="com.bean.dog" />
</set>
</class>
</hibernate-mapping>
dog.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.bean.dog" table="new.dog" lazy="false">
<cache usage="read-write"/>
<id column="did" name="did" type="string">
<generator class="uuid"></generator>
</id>
<property name="dname" column="dname" type="string"></property>
<many-to-one name="antype" fetch="join" outer-join="true" class="com.bean.antype" column="aid" cascade="all" ></many-to-one>
</class>
</hibernate-mapping>
(3) many-to-many
package com.bean;
import java.util.Set;
public class biaozi {
private String bid;
private String bname;
private Set<nanren> nanren;
public Set<nanren> getNanren() {
return nanren;
}
public void setNanren(Set<nanren> nanren) {
this.nanren = nanren;
}
public String getBid() {
return bid;
}
public void setBid(String bid) {
this.bid = bid;
}
public String getBname() {
return bname;
}
public void setBname(String bname) {
this.bname = bname;
}
public biaozi() {
// TODO Auto-generated constructor stub
}
}
package com.bean;
import java.util.Set;
public class nanren {
private String nid;
private String nname;
private Set<biaozi> biaozi;
public Set<biaozi> getBiaozi() {
return biaozi;
}
public void setBiaozi(Set<biaozi> biaozi) {
this.biaozi = biaozi;
}
public String getNid() {
return nid;
}
public void setNid(String nid) {
this.nid = nid;
}
public String getNname() {
return nname;
}
public void setNname(String nname) {
this.nname = nname;
}
public nanren() {
// TODO Auto-generated constructor stub
}
}
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.bean.biaozi" table="new.biaozi" >
<id column="bid" name="bid" type="string">
<generator class="uuid"></generator>
</id>
<property name="bname" column="bname" type="string"></property>
<set name="nanren" table="new.jiaopei">
<key column="bid"></key>
<many-to-many column="nid" class="com.bean.nanren"></many-to-many>
</set>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.bean.nanren" table="new.nanren" >
<id column="nid" name="nid" type="string">
<generator class="uuid"></generator>
</id>
<property name="nname" column="nname" type="string"></property>
<set name="biaozi" table="new.jiaopei">
<key column="nid"></key>
<many-to-many class="com.bean.biaozi" column="bid"></many-to-many>
</set>
</class>
</hibernate-mapping>
(4) 联合主键,联合主键引用了别的表的主键,联合主键并被别的表作为外键
package com.bean;
public class yumi {
private yid corid;
private String yname;
public yid getCorid() {
return corid;
}
public void setCorid(yid corid) {
this.corid = corid;
}
public String getYname() {
return yname;
}
public void setYname(String yname) {
this.yname = yname;
}
public yumi() {
}
}
package com.bean;
import java.io.Serializable;
public class yid implements Serializable{
private writer writer;
private sun sun;
public writer getWriter() {
return writer;
}
public void setWriter(writer writer) {
this.writer = writer;
}
public sun getSun() {
return sun;
}
public void setSun(sun sun) {
this.sun = sun;
}
public yid() {
// TODO Auto-generated constructor stub
}
}
package com.bean;
public class writer {
private String wid;
private String wname;
public String getWid() {
return wid;
}
public void setWid(String wid) {
this.wid = wid;
}
public String getWname() {
return wname;
}
public void setWname(String wname) {
this.wname = wname;
}
public writer() {
// TODO Auto-generated constructor stub
}
public writer(String wid, String wname) {
this.wid = wid;
this.wname = wname;
}
}
package com.bean;
public class sun {
private String sid;
private String sname;
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public sun() {
// TODO Auto-generated constructor stub
}
public sun(String sid, String sname) {
this.sid = sid;
this.sname = sname;
}
}
package com.bean;
import java.util.Set;
public class Zhiwu {
private int id;
private String name;
private yumi yumi;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public yumi getYumi() {
return yumi;
}
public void setYumi(yumi yumi) {
this.yumi = yumi;
}
}
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.bean.sun" table="new.sun" >
<id column="sid" name="sid" type="string">
<generator class="uuid"></generator>
</id>
<property name="sname" column="sname" type="string"></property>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.bean.writer" table="new.writer" >
<id column="wid" name="wid" type="string">
<generator class="uuid"></generator>
</id>
<property name="wname" column="wname" type="string"></property>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.bean.yumi" table="new.yumi">
<composite-id class="com.bean.yid" name="corid">
<key-many-to-one name="sun" column="sid" class="com.bean.sun"></key-many-to-one>
<key-many-to-one name="writer" column="wid" class="com.bean.writer"></key-many-to-one>
</composite-id>
<property name="yname" column="yname" type="string"></property>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.bean.Zhiwu" table="new.zhiwu" >
<id column="id" name="id" type="big_decimal">
<generator class="assigned"></generator>
</id>
<property name="name" column="name" type="string"></property>
<many-to-one name="yumi" class="com.bean.yumi" >
<column name="Z_ID"></column>
<column name="Z_NAME"></column>
</many-to-one>
</class>
</hibernate-mapping>
(5) 分割表 将一张表的数据分为多各类
package com.bean;
public class Company {
private int id;
private String name;
private CompanyTel companyTel;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public CompanyTel getCompanyTel() {
return companyTel;
}
public void setCompanyTel(CompanyTel companyTel) {
this.companyTel = companyTel;
}
}
package com.bean;
import java.io.Serializable;
public class CompanyTel implements Serializable{
private int id;
private String num;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
}
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.bean.Company" table="new.Company" >
<id column="C_ID" name="id" type="big_decimal">
<generator class="native"></generator>
</id>
<property name="name" column="C_NAME" type="string"></property>
<component name="companyTel" class="com.bean.CompanyTel" lazy="false">
<property name="num" column="C_NUM" ></property>
</component>
</class>
</hibernate-mapping>
(6) hibernage.cgf.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">
oracle.jdbc.OracleDriver
</property>
<property name="connection.url">
jdbc:oracle:thin:@127.0.0.1:1521:orcl
</property>
<property name="connection.username">new</property>
<property name="connection.password">sa</property>
<property name="connection.provider_class">
org.hibernate.connection.C3P0ConnectionProvider
</property>
<property name="c3p0.max_size">100</property>
<property name="c3p0.min_size">20</property>
<property name="c3p0.timeout">1000</property>
<property name="hibernate.cache.provider_class">
org.hibernate.cache.HashtableCacheProvider
</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.cache.use_second_level_cache">
true
</property>
<property name="hibernate.cache.use_query_cache">true</property>
<property name="dialect">
org.hibernate.dialect.Oracle9Dialect
</property>
<!-- <property name="hbm2ddl.auto">create</property> -->
<property name="hbm2ddl.auto">update</property>
<!-- <mapping resource="com/bean/big.hbm.xml" />
<mapping resource="com/bean/sun.hbm.xml" />
<mapping resource="com/bean/writer.hbm.xml" />
<mapping resource="com/bean/yumi.hbm.xml" />
<mapping resource="com/bean/dog.hbm.xml" />
<mapping resource="com/bean/antype.hbm.xml" />
<mapping resource="com/bean/person.hbm.xml" />
<mapping resource="com/bean/idcard.hbm.xml" />
<mapping resource="com/bean/biaozi.hbm.xml" />
<mapping resource="com/bean/nanren.hbm.xml" />
<mapping resource="com/bean/Zhiwu.hbm.xml" />
<mapping resource="com/bean/Company.hbm.xml" />-->
<!-- <mapping class="com.bean.T_Auto_Test"/> -->
<mapping resource="com/bean/dog.hbm.xml" />
<mapping resource="com/bean/antype.hbm.xml" />
</session-factory>
</hibernate-configuration>