JPA之OneToOne映射的示例
来源:互联网 发布:java reflection enum 编辑:程序博客网 时间:2024/06/02 07:27
代码源自:《EJB3.0实例教程》的源码。
persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
<persistence-unit name="OneToOnePU" transaction-type="JTA">
<jta-data-source>java:/MySqlDS</jta-data-source>
<properties><property name="hibernate.hbm2ddl.auto" value="create-drop"/></properties>
</persistence-unit>
</persistence>
IDCard.java:
package com.cecltd.domain;import java.io.Serializable;import javax.persistence.CascadeType;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.OneToOne;import javax.persistence.Table;@SuppressWarnings("serial")@Entity@Table(name = "IDCard")public class IDCard implements Serializable{ private Integer id; private String cardno; private Person person; public IDCard() { } public IDCard(String cardno) { this.cardno = cardno; } @Id @GeneratedValue public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } @Column(nullable=false,length=18,unique = true) public String getCardno() { return cardno; } public void setCardno(String cardno) { this.cardno = cardno; } @OneToOne(optional = false, cascade = CascadeType.REFRESH) @JoinColumn(name = "Person_ID", referencedColumnName = "personid",unique = true) public Person getPerson() { return person; } public void setPerson(Person person) { this.person = person; }}
Person.java:
package com.cecltd.domain;import java.io.Serializable;import java.util.Date;import javax.persistence.CascadeType;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.OneToOne;import javax.persistence.Table;import javax.persistence.Temporal;import javax.persistence.TemporalType;@SuppressWarnings("serial")@Entity@Table(name = "Person")public class Person implements Serializable {private Integer personid;private String name;private boolean sex;private Short age;private Date birthday;private IDCard idcard;@Id@GeneratedValuepublic Integer getPersonid() {return personid;}public void setPersonid(Integer personid) {this.personid = personid;}@Column(name = "PersonName", nullable = false, length = 32)public String getName() {return name;}public void setName(String name) {this.name = name;}@Column(nullable = false)public boolean getSex() {return sex;}public void setSex(boolean sex) {this.sex = sex;}@Column(nullable = false)public Short getAge() {return age;}public void setAge(Short age) {this.age = age;}@Temporal(value = TemporalType.DATE)public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}@OneToOne(optional = true, cascade = CascadeType.ALL, mappedBy = "person")public IDCard getIdcard() {return idcard;}public void setIdcard(IDCard idcard) {this.idcard = idcard;}}
OneToOneDAO.java:
package com.cecltd.ejb3;import java.util.Date;import com.cecltd.domain.Person;public interface OneToOneDAO { public void insertPerson(String name, boolean sex,short age, Date birthday,String cardID); public Person getPersonByID(Integer orderid); public void updatePersonInfo(Integer personid, String newname, String newIDcard); public void deletePerson(Integer personid);}
OneToOneDAOBean.java:
package com.cecltd.ejb3.impl;import java.util.Date;import javax.ejb.Remote;import javax.ejb.Stateless;import javax.persistence.EntityManager;import javax.persistence.PersistenceContext;import com.cecltd.domain.IDCard;import com.cecltd.domain.Person;import com.cecltd.ejb3.OneToOneDAO;@Stateless@Remote ({OneToOneDAO.class})public class OneToOneDAOBean implements OneToOneDAO { @PersistenceContext protected EntityManager em; public void insertPerson(String name, boolean sex,short age, Date birthday,String cardID) { Person person = new Person(); person.setName(name); person.setSex(sex); person.setAge(Short.valueOf(age)); person.setBirthday(birthday); IDCard idcard = new IDCard(cardID); idcard.setPerson(person); person.setIdcard(idcard); em.persist(person); } public Person getPersonByID(Integer personid) { Person person = em.find(Person.class, personid); return person; } public void updatePersonInfo(Integer personid, String newname, String newIDcard) { Person person = em.find(Person.class, personid); if (person!=null) { person.setName(newname); if (person.getIdcard()!=null){ person.getIdcard().setCardno(newIDcard); } em.merge(person); } } public void deletePerson(Integer personid) { Person person = em.find(Person.class, personid); if (person!=null) em.remove(person); }}
测试代码:OneToOneClient.java:
package test;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Properties;import javax.naming.InitialContext;import javax.naming.NamingException;import com.cecltd.domain.Person;import com.cecltd.ejb3.OneToOneDAO;public class OneToOneClient {public static void main(String[] args) throws NamingException {Properties props = new Properties();props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory"); props.setProperty("java.naming.provider.url", "127.0.0.1:1099"); props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");InitialContext ctx = new InitialContext(props);try {String outformate = "";OneToOneDAO oneToonedao = (OneToOneDAO) ctx.lookup("OneToOneDAOBean/remote");SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");SimpleDateFormat formatter1 = new SimpleDateFormat("MMddhhmmss");String endno = formatter1.format(new Date()).toString();oneToonedao.insertPerson("月影传说", true, (short)26, formatter.parse("1981-06-01"), "44011"+endno);//添加时请注意,身份证号不要重复,因为数据库字段身份证号是唯一的Person person = oneToonedao.getPersonByID(new Integer(1)); if (person!=null){System.out.println(outformate +"寻找编号为1的人员");System.out.println("姓名:"+ person.getName() +" 身份证:"+ person.getIdcard().getCardno());}else{System.out.println("没有找到编号为1的人员");}System.out.println(outformate +"更新编号为1的人员的姓名为火影忍者,身份证号为33012" +endno +"");oneToonedao.updatePersonInfo(new Integer(1), "火影忍者", "33012" +endno);System.out.println("================删除编号为3的人员==============");oneToonedao.deletePerson(new Integer(3));} catch (Exception e) {System.out.println(e.getMessage());}}}
- JPA之OneToOne映射的示例
- JPA @OneToOne 映射
- JPA之OneToMany映射的示例
- JPA之ManyToMany映射的示例
- hibernate JPA 一对一 onetoone映射
- 09hibernate hibernate的关系映射之OneToOne(重点)
- JPA-@oneToOne
- hibernate的OneToOne映射等
- JPA总结——实体关系映射(一对一@OneToOne)
- JPA总结——实体关系映射(一对一@OneToOne)
- JPA总结——实体关系映射(一对一@OneToOne)
- JPA总结——实体关系映射(一对一@OneToOne)
- Spring boot data JPA数据库映射关系 : @OneToOne,@OneToMany,@ManyToMany
- Spring boot data JPA数据库映射关系 : @OneToOne,@OneToMany,@ManyToMany
- JPA中one-to-one关系的单向映射示例
- JPA中one-to-one关系的单向映射示例
- JPA之日期和枚举的JPA映射
- JPA OneToOne双向关系
- Windows 2003系统优化技巧
- 读后感:为什么DIY报价----走出软件作坊:三五个人十来条枪 如何成为开发正规军(十二)
- Linux NFS服务器性能优化
- FREEBSD升级及优化全攻略
- RISC架构服务器开源运动将促使市场需求提升
- JPA之OneToOne映射的示例
- IT治理的成功要诀
- 中化CIO彭劲松:IT治理让我明明白白做事
- 中国惠普公司企业计算及专业服务集团卫东:IT治理最重要就是保证技术与业务有效结合
- 陈拂晓:以IT治理取代经验型管理 构建高效管理体制
- ITIL介绍及应用案例(四)
- ITIL介绍及应用案例(三)
- 拿起放下,都不容易!
- ITIL介绍及应用案例(二)