Hibernate 一对一的关系(one-to-one)
2008-10-14 09:44
281 查看
Hibernate 一对一的关系(one-to-one)
假设学生和卡是一对一的关系
(mysql)
学生表:
CREATE TABLE `stu` (
`sid` int(11) NOT NULL auto_increment,
`sname` varchar(50) default NULL,
PRIMARY KEY (`sid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
卡表:
CREATE TABLE `card` (
`cid` int(11) NOT NULL auto_increment,
`cname` varchar(50) default NULL,
PRIMARY KEY (`cid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Stu Bean:
public class Stu implements java.io.Serializable {
private Integer sid;
private String sname;
private Card card;
public Card getCard() {
return card;
}
public void setCard(Card card) {
this.card = card;
}
public Stu() {
}
public Stu(String sname) {
this.sname = sname;
}
public Integer getSid() {
return this.sid;
}
public void setSid(Integer sid) {
this.sid = sid;
}
public String getSname() {
return this.sname;
}
public void setSname(String sname) {
this.sname = sname;
}
}
Card Bean:
public class Card implements java.io.Serializable {
private Integer cid;
private String cname;
private Stu stu;
public Stu getStu() {
return stu;
}
public void setStu(Stu stu) {
this.stu = stu;
}
public Card() {
}
public Card(String cname) {
this.cname = cname;
}
public Integer getCid() {
return this.cid;
}
public void setCid(Integer cid) {
this.cid = cid;
}
public String getCname() {
return this.cname;
}
public void setCname(String cname) {
this.cname = cname;
}
}
Stu.hbm.xml:
<hibernate-mapping>
<class name="com.vo.Stu" table="stu" catalog="lms">
<id name="sid" type="java.lang.Integer">
<column name="sid" />
<generator class="native" />
</id>
<property name="sname" type="java.lang.String">
<column name="sname" length="50" />
</property>
<one-to-one name="card" class="com.vo.Card" cascade="save-update"></one-to-one>
</class>
</hibernate-mapping>
Card.hbm.xml:
<hibernate-mapping>
<class name="com.vo.Card" table="card" catalog="lms">
<id name="cid" type="java.lang.Integer">
<column name="cid" />
<generator class="foreign" >
<param name="property">stu</param>
</generator>
</id>
<property name="cname" type="java.lang.String">
<column name="cname" length="50" />
</property>
<one-to-one name="stu" class="com.vo.Stu"></one-to-one>
</class>
</hibernate-mapping>
Test.java:
public class Test {
SessionFactory sf;
Session session;
private Test()
{
try
{
Configuration cfg = new Configuration();
sf = cfg.configure().buildSessionFactory();
session = sf.openSession();
}
catch(HibernateException ex)
{
ex.printStackTrace();
}
}
public void addMethod(Stu st)
{
Transaction t=null;
t=session.beginTransaction();
session.save(st);
t.commit();
}
public static void main(String[] args) {
Stu st=new Stu();
st.setSname("ding6");
Card ca=new Card();
ca.setCname("jcard6");
st.setCard(ca);
ca.setStu(st);
new Test().addMethod(st);
}
}
假设学生和卡是一对一的关系
(mysql)
学生表:
CREATE TABLE `stu` (
`sid` int(11) NOT NULL auto_increment,
`sname` varchar(50) default NULL,
PRIMARY KEY (`sid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
卡表:
CREATE TABLE `card` (
`cid` int(11) NOT NULL auto_increment,
`cname` varchar(50) default NULL,
PRIMARY KEY (`cid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Stu Bean:
public class Stu implements java.io.Serializable {
private Integer sid;
private String sname;
private Card card;
public Card getCard() {
return card;
}
public void setCard(Card card) {
this.card = card;
}
public Stu() {
}
public Stu(String sname) {
this.sname = sname;
}
public Integer getSid() {
return this.sid;
}
public void setSid(Integer sid) {
this.sid = sid;
}
public String getSname() {
return this.sname;
}
public void setSname(String sname) {
this.sname = sname;
}
}
Card Bean:
public class Card implements java.io.Serializable {
private Integer cid;
private String cname;
private Stu stu;
public Stu getStu() {
return stu;
}
public void setStu(Stu stu) {
this.stu = stu;
}
public Card() {
}
public Card(String cname) {
this.cname = cname;
}
public Integer getCid() {
return this.cid;
}
public void setCid(Integer cid) {
this.cid = cid;
}
public String getCname() {
return this.cname;
}
public void setCname(String cname) {
this.cname = cname;
}
}
Stu.hbm.xml:
<hibernate-mapping>
<class name="com.vo.Stu" table="stu" catalog="lms">
<id name="sid" type="java.lang.Integer">
<column name="sid" />
<generator class="native" />
</id>
<property name="sname" type="java.lang.String">
<column name="sname" length="50" />
</property>
<one-to-one name="card" class="com.vo.Card" cascade="save-update"></one-to-one>
</class>
</hibernate-mapping>
Card.hbm.xml:
<hibernate-mapping>
<class name="com.vo.Card" table="card" catalog="lms">
<id name="cid" type="java.lang.Integer">
<column name="cid" />
<generator class="foreign" >
<param name="property">stu</param>
</generator>
</id>
<property name="cname" type="java.lang.String">
<column name="cname" length="50" />
</property>
<one-to-one name="stu" class="com.vo.Stu"></one-to-one>
</class>
</hibernate-mapping>
Test.java:
public class Test {
SessionFactory sf;
Session session;
private Test()
{
try
{
Configuration cfg = new Configuration();
sf = cfg.configure().buildSessionFactory();
session = sf.openSession();
}
catch(HibernateException ex)
{
ex.printStackTrace();
}
}
public void addMethod(Stu st)
{
Transaction t=null;
t=session.beginTransaction();
session.save(st);
t.commit();
}
public static void main(String[] args) {
Stu st=new Stu();
st.setSname("ding6");
Card ca=new Card();
ca.setCname("jcard6");
st.setCard(ca);
ca.setStu(st);
new Test().addMethod(st);
}
}
相关文章推荐
- Hibernate 、多表关联映射 - 一对一关系映射(one- to-one)
- Hibernate 、多表关联映射 - 一对一关系映射(one- to-one)
- Hibernate关系映射 一对一双向外键关联@OneToOne Annotation方式
- Hibernate关系映射 一对一双向外键关联@OneToOne Annotation方式 双向关联和单向关联的区别
- Hibernate 、多表关联映射 - 一对一关系映射(one- to-one)
- Hibernate关系映射(二)一对一双向外键关联@OneToOne Annotation方式
- Hibernate关系映射(一)一对一单向外键关联@OneToOne Annotation方式
- hibernate关系映射--双向一对一@OneToOne
- Hibernate使用property-ref属性解决遗留数据库One To Many关系的问题。
- JPA总结——实体关系映射(一对一@OneToOne)
- hibernate 一对一(one to one)级联保存
- Hibernate_基于Annotation的使用_OneToOne_Demo(不维护关系那方(mappedBy="person"))
- Django数据模型关系之OneToOneField(一对一关系)
- Entity Framework 实践系列 —— 搞好关系 - 单相思(单向一对一,one-to-one)
- Hibernate 一对一 (one-to-one)
- 【SSH快速进阶】——Hibernate一对一映射(one-to-one)——唯一外键关联
- Hibernate 表关系描述之OneToOne
- Hibernate学习笔记:一对一的关联关系(one-to-one)
- JPA总结——实体关系映射(一对一@OneToOne)
- Hibernate关系映射(四)一对多单向关联@OneToMany Annotation方式