一个完整的hibernate的one-to-many的例子
2007-07-26 09:51
471 查看
前段时间一直在研究hibernate的one-to-many,看了不少资料也在本论坛上求教过,但由于本人对Hibernate研究的时间不是很长,所以花了不少时间和精力.昨天终于弄出来了,现在与大家分享,希望对初学者有帮助!
1、设置数据库,本人使用的数据库是Oracle 9i
设置hibernate.properties
## Oracle
hibernate.dialect net.sf.hibernate.dialect.Oracle9Dialect
#hibernate.dialect net.sf.hibernate.dialect.OracleDialect
hibernate.connection.driver_class oracle.jdbc.driver.OracleDriver
hibernate.connection.username sa
hibernate.connection.password sa
hibernate.connection.url jdbc:oracle:thin:@xxx.xxx.xxx.xxx:1521:myoracle
2、假设一个用户可以同时有几个帐户,能通过帐户对应到用户,即为一个双向的one-to-many.这是引用我在论坛上发表的文章的回复,很谢谢geniouc给我的参考。
3、javaBean: customer & account
public class Customer {
private String cid;
private String custName;
private Set accounts= new HashSet();
public Customer(){
}
public String getCid() {
return cid;
}
public void setCid(String cid) {
this.cid = cid;
}
public String getCustName() {
return custName;
}
public void setCustName(String custName) {
this.custName = custName;
}
public Set getAccounts(){
return accounts;
}
public void setAccounts(Set accounts){
this.accounts = accounts;
}
}
public class Account {
private long aid;
private String accNumber;
private Customer customer;
public Account(){
}
public long getAid() {
return aid;
}
public void setAid(long aid) {
this.aid = aid;
}
public String getAccNumber() {
return accNumber;
}
public void setAccNumber(String accNumber) {
this.accNumber = accNumber;
}
public Customer getCustomer(){
return customer;
}
public void setCustomer(Customer customer){
this.customer = customer;
}
}
4、xml配置文件中:(关系的建立)
Account.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class name="one2many.Account" table="Account">
<id name="aid" type="long" column="aid" unsaved-value="0">
<generator class="increment"/>
</id>
<property name="accNumber" type="string"/>
<many-to-one name="customer" column="cidForCustomer"/>
</class>
</hibernate-mapping>
Customer.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class name="one2many.Customer" table="Customer">
<id name="cid" type="string" column="cid">
<generator class="assigned"/>
</id>
<property name="custName" type="string"/>
<set name="accounts" lazy="true" inverse="true" cascade="all" >
<key column="cidForCustomer"/>
<one-to-many class="one2many/Account"/>
</set>
</class>
</hibernate-mapping>
5、测试程序,Test.java
package one2many;
import net.sf.hibernate.*;
import net.sf.hibernate.cfg.*;
public class Test {
public static void main(String[] args) throws HibernateException {
Configuration conf= new Configuration();
conf.addClass(Account.class);
conf.addClass(Customer.class);
SessionFactory sessionFactory = conf.buildSessionFactory();
Customer cust = new Customer();
cust.setCid("aa");
cust.setCustName("Kelvin");
Account acc = new Account();
acc.setAccNumber("acc");
acc.setCustomer(cust);
Account acc1 = new Account();
acc1.setAccNumber("acc1");
acc1.setCustomer(cust);
cust.getAccounts().add(acc);
cust.getAccounts().add(acc1);
Session session = sessionFactory.openSession();
Transaction tx= session.beginTransaction();
session.save(cust);
tx.commit();
session.close();
sessionFactory.close();
}
1、设置数据库,本人使用的数据库是Oracle 9i
设置hibernate.properties
## Oracle
hibernate.dialect net.sf.hibernate.dialect.Oracle9Dialect
#hibernate.dialect net.sf.hibernate.dialect.OracleDialect
hibernate.connection.driver_class oracle.jdbc.driver.OracleDriver
hibernate.connection.username sa
hibernate.connection.password sa
hibernate.connection.url jdbc:oracle:thin:@xxx.xxx.xxx.xxx:1521:myoracle
2、假设一个用户可以同时有几个帐户,能通过帐户对应到用户,即为一个双向的one-to-many.这是引用我在论坛上发表的文章的回复,很谢谢geniouc给我的参考。
3、javaBean: customer & account
public class Customer {
private String cid;
private String custName;
private Set accounts= new HashSet();
public Customer(){
}
public String getCid() {
return cid;
}
public void setCid(String cid) {
this.cid = cid;
}
public String getCustName() {
return custName;
}
public void setCustName(String custName) {
this.custName = custName;
}
public Set getAccounts(){
return accounts;
}
public void setAccounts(Set accounts){
this.accounts = accounts;
}
}
public class Account {
private long aid;
private String accNumber;
private Customer customer;
public Account(){
}
public long getAid() {
return aid;
}
public void setAid(long aid) {
this.aid = aid;
}
public String getAccNumber() {
return accNumber;
}
public void setAccNumber(String accNumber) {
this.accNumber = accNumber;
}
public Customer getCustomer(){
return customer;
}
public void setCustomer(Customer customer){
this.customer = customer;
}
}
4、xml配置文件中:(关系的建立)
Account.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class name="one2many.Account" table="Account">
<id name="aid" type="long" column="aid" unsaved-value="0">
<generator class="increment"/>
</id>
<property name="accNumber" type="string"/>
<many-to-one name="customer" column="cidForCustomer"/>
</class>
</hibernate-mapping>
Customer.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
<class name="one2many.Customer" table="Customer">
<id name="cid" type="string" column="cid">
<generator class="assigned"/>
</id>
<property name="custName" type="string"/>
<set name="accounts" lazy="true" inverse="true" cascade="all" >
<key column="cidForCustomer"/>
<one-to-many class="one2many/Account"/>
</set>
</class>
</hibernate-mapping>
5、测试程序,Test.java
package one2many;
import net.sf.hibernate.*;
import net.sf.hibernate.cfg.*;
public class Test {
public static void main(String[] args) throws HibernateException {
Configuration conf= new Configuration();
conf.addClass(Account.class);
conf.addClass(Customer.class);
SessionFactory sessionFactory = conf.buildSessionFactory();
Customer cust = new Customer();
cust.setCid("aa");
cust.setCustName("Kelvin");
Account acc = new Account();
acc.setAccNumber("acc");
acc.setCustomer(cust);
Account acc1 = new Account();
acc1.setAccNumber("acc1");
acc1.setCustomer(cust);
cust.getAccounts().add(acc);
cust.getAccounts().add(acc1);
Session session = sessionFactory.openSession();
Transaction tx= session.beginTransaction();
session.save(cust);
tx.commit();
session.close();
sessionFactory.close();
}
}
相关文章推荐
- 一个完整的hibernate的one-to-many的例子
- 一个完整的hibernate的one-to-many的例子
- 一个完整的hibernate的one-to-many的例子
- Hibernate实体关系映射(OneToMany单边)——完整实例
- Hibernate实体关系映射(OneToMany、ManyToOne双边)——完整实例
- Hibernate 使用 Annotation 之 OneToMany(双向关联关系)
- Hibernate报错:could not initialize proxy -no session以及 one-to-many配置
- Hibernate二次笔记 之 从one-to-many分析处理技巧
- mybatis中的一个异常:org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to
- Hibernate学习篇08——onetomany外键非空约束
- hibernate OneToMany (Annotation)
- Hibernate @OneToMany等注解设置查询过滤条件等
- hibernate映射文件many-to-one元素属性
- hibernate many-to-one 一些属性说明(outer-join)
- openjpa one to many 小例子
- hibernate中的@OneToMany、@ManyToOne以及@ManyToMany
- hibernate:many to one
- struts+spring+hibernate的一个完整的例子
- 一个完整的hibernate例子
- hibernate------one-to-one(一个表的主键由另一个表的主键决定)