一对多 多对一 多对多 例子

public class dbtest implements Serializable {
    private static final long serialVersionUID = 1L;
    private long int_1;
    private String str_1;
    private Date date_1;
    private Set<dbtest2> dbt2s;
}

<?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">

<hibernate-mapping>
	<class name="model.bean.dbtest" table="dbtest">
		<id name="int_1" type="long">
			<column name="int_1" />
			<generator class="increment"></generator>
		</id>
		<property name="str_1" type="string">
			<column name="str_1" />
		</property>
		<property name="date_1" type="date">
			<column name="date_1" />
		</property>
		 
		<set name="dbt2s" >
			<key  column="pk2" ></key>
			<one-to-many class="model.bean.dbtest2" />
		</set>
		
		<!-- 
		<set name="dbt2s" table="m2mtest">
			<key  column="id1" foreign-key="int_1"></key>
			<many-to-many class="model.bean.dbtest2" column="id2" foreign-key="int_2"/>
		</set>
		-->
	</class>
</hibernate-mapping>

public class dbtest2 implements Serializable {
	private static final long serialVersionUID = 1L;

	private long int_2;
	private String str_2;
	private dbtest dbt;
}

<?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">

<hibernate-mapping>
	<class name="model.bean.dbtest2" table="dbtest2">
		<id name="int_2" type="long">
			<column name="int_2" />
			<generator class="increment"></generator>
		</id>
		<property name="str_2" type="string">
			<column name="str_2" />
		</property>
		<many-to-one name="dbt" column="pk2" class="model.bean.dbtest"/>
	</class>
</hibernate-mapping>


package dao.impl;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

import model.bean.dbtest;
import model.bean.dbtest2;

import org.hibernate.Hibernate;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import dao.dbtestDao;

public class dbtestDaoImpl implements dbtestDao {

	Configuration cfg;

	SessionFactory sf;

	public Integer getTestint() {
		return testint;
	}

	public void setTestint(Integer testint) {
		this.testint = testint;
	}

	public String getTeststr() {
		return teststr;
	}

	public void setTeststr(String teststr) {
		this.teststr = teststr;
	}

	Session session;

	Integer testint;

	String teststr;

	Set<String> testset = new HashSet<String>();

	List<String> testlist = new ArrayList<String>();

	Properties testproperties = new Properties();

	public Set<String> getTestset() {
		return testset;
	}

	public void setTestset(Set<String> testset) {
		this.testset = testset;
	}

	public List<String> getTestlist() {
		return testlist;
	}

	public void setTestlist(List<String> testlist) {
		this.testlist = testlist;
	}

	public Properties getTestproperties() {
		return testproperties;
	}

	public void setTestproperties(Properties testproperties) {
		this.testproperties = testproperties;
	}

	public Map<String, String> getTestmap() {
		return testmap;
	}

	public void setTestmap(Map<String, String> testmap) {
		this.testmap = testmap;
	}

	Map<String, String> testmap = new HashMap<String, String>();;

	public void init() {
		System.out.println("dbtestDaoImpl:init()");
	}

	public void destory() {
		System.out.println("dbtestDaoImpl:destory()");
	}

	public Configuration getCfg() {
		return cfg;
	}

	public void setCfg(Configuration cfg) {
		this.cfg = cfg;
	}

	public void doConfiguration() {
		// cfg = new Configuration();
		cfg.configure("model/hibernate.cfg.xml");
		sf = cfg.buildSessionFactory();

	}

	public void openSession() {
		session = sf.openSession();

	}

	public void closeSession() {
		if (session.isOpen()) {
			session.close();
		}
	}

	public void saveEntity(String str) {
		Transaction tx1 = session.beginTransaction();
		dbtest bc1 = new dbtest();
		bc1.setDate_1(new Date());
		bc1.setStr_1(str);
		session.save(bc1);
		tx1.commit();
	}

	public void deleteEntity(long id) {
		Transaction tx3 = session.beginTransaction();

		try {
			// dbtest bc4 = (dbtest) session.load(dbtest.class, id);
			dbtest bc4 = new dbtest();
			bc4.setInt_1(id);
			session.delete(bc4);
		} catch (Exception e) {
			System.out.print("id= 1 car are not existed , cannot be deleted;");

		}
		tx3.commit();
	}

	public void updateEntity(long id, String str) {
		Transaction tx2 = session.beginTransaction();
		dbtest bc2 = (dbtest) session.load(dbtest.class, id);
		// dbtest bc2 = new dbtest();
		// bc2.setInt_1(id);
		bc2.setStr_1(str);
		// bc2.setDate_1(new Date());
		session.update(bc2);
		tx2.commit();
	}

	public void queryEntity(long id) {
		try {
			// String hql = "select int_1,str_1 from dbtest where int_1=?";
			// Query query = session.createQuery(hql);
			// query.setLong(0, id);

			String hql = "select int_1,str_1 from dbtest where int_1=:int_1";
			Query query = session.createQuery(hql);
			query.setParameter("int_1", id);

			List<?> lst = query.list();
			for (Iterator<?> iterator = lst.iterator(); iterator.hasNext();) { // iterator.next();
				Object[] dbtest = (Object[]) iterator.next();
				System.out.println("str=" + dbtest[0]);
			}

			dbtest dbt = (dbtest) session.get(dbtest.class, 1L);
			System.out.println("Int_1=" + dbt.getInt_1());
			System.out.println("Str_1=" + dbt.getStr_1());

		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("no data in database");
			throw e;
		}

	}

	@Override
	public void queryEntitym2o(long l) {
		// TODO Auto-generated method stub
		dbtest2 dbt2 = null;
		try {
			dbt2 = (dbtest2) session.get(dbtest2.class, l);
			Hibernate.initialize(dbt2.getDbt());
			System.out.println("dbt2.getDbt().getStr_1() "
					+ dbt2.getDbt().getStr_1());
			System.out.println("dbt2.getDbt().getDate_1 "
					+ dbt2.getDbt().getDate_1());
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (session.isOpen()) {
				session.close();
			}
		}
	}

	@Override
	public void saveEntitym2o(long l) {
		// TODO Auto-generated method stub
		dbtest2 dbt2 = new dbtest2();
		dbt2.setStr_2("this is dbt2");
		dbt2.setDbt((dbtest) session.get(dbtest.class, 3L));
		Transaction tx = session.beginTransaction();
		try {
			session.saveOrUpdate(dbt2);
			tx.commit();
		} catch (Exception e) {
			tx.rollback();
			e.printStackTrace();
			// TODO: handle exception
		} finally {
			if (session.isOpen()) {
				session.close();
			}
		}
	}

	@Override
	public void queryEntityo2m(long l) {
		// TODO Auto-generated method stub
		dbtest dbt = null;
		try {
			dbt = (dbtest) session.get(dbtest.class, l);
			Hibernate.initialize(dbt.getDbt2s());

			for (dbtest2 dbt2 : dbt.getDbt2s()) {
				System.out.println("dbt2.getStr_2() " + dbt2.getStr_2());
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (session.isOpen()) {
				session.close();
			}
		}
	}

	@Override
	public void saveEntityo2m(long l) {
		// TODO Auto-generated method stub
		dbtest dbt = new dbtest();
		dbt.setStr_1("new dbt");
		dbt.setDate_1(new Date());
		@SuppressWarnings("unchecked")
		List<dbtest2> list = session.createCriteria(dbtest2.class).list();
		Set<dbtest2> set = new HashSet<dbtest2>(list);
		dbt.setDbt2s(set);
		Transaction tx = session.beginTransaction();
		try {
			session.saveOrUpdate(dbt);
			tx.commit();
		} catch (Exception e) {
			tx.rollback();
			e.printStackTrace();
			// TODO: handle exception
		} finally {
			if (session.isOpen()) {
				session.close();
			}
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值