hibernate一对多配置文件的写法

1.***************一的一方(customer)**********************************

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!--name:类全名,table:表的名称,catalog:数据库名称-->
	<class name="hibernate_oneToMany.Customer" table="t_customer" catalog="exam">
	<!--id描述主键-->
		<id name="id" column="c_id" length="11">
		<!--主键生成策略--> 
			<generator class="identity"></generator> 
		</id>
		<!--使用property描述属性与字段的对应关系-->
		<property name="name" column="c_name" length="20"></property>
		<!--一个客户关联多个订单-->
		<set name="orders" inverse="true" cascade="all"><!--inverse表示放弃维护,只在双向关联下有用-->
			<key column="c_customer_id"></key>
			<one-to-many class="hibernate_oneToMany.Order"/>
			<!--
				使用set描述在一的一方关联的多   Set<Order> name属性指的就是set集合名称,
				key:描述的是多的一方产生的外键名称,要与多的一方定义的外键名称相同
			-->
		</set>
		<!--测试一对两个多,已成功-->
		<set name="books" inverse="true" cascade="all">
			<key column="c_customer_book_id"></key>
			<one-to-many class="hibernate_oneToMany.Book"/>
		</set>
	</class>
</hibernate-mapping>
2.***************多的一方(order)*******************

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!--name:类全名,table:表的名称,catalog:数据库名称-->
	<class name="hibernate_oneToMany.Order" table="t_order" catalog="exam">
	<!--id描述主键-->
		<id name="id" column="o_id" length="11">
		<!--主键生成策略-->
			<generator class="identity"></generator> 
		</id>
		<!--使用property描述属性与字段的对应关系-->
		<property name="money" column="o_money"></property>
		<property name="address" column="o_address" length="50"></property>
		<!--多对一-->
		<many-to-one name="customer" cascade="save-update" class="hibernate_oneToMany.Customer" column="c_customer_id"></many-to-one>
		<!--  save-update
			name属性描述的是Order中的一方的属性Customer customer,
			class属性代表的是一方的属性,
			column描述的是一对多,在多的一方产生外键名称,
			cascade:级联操作,表示在保存这一方的时候也对另一方进行了操作
		-->
	</class>
</hibernate-mapping>
3.***********多的一方(book)***************
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!--name:类全名,table:表的名称,catalog:数据库名称-->
	<class name="hibernate_oneToMany.Book" table="t_book" catalog="exam">
	<!--id描述主键-->
		<id name="id" column="b_id" length="11">
		<!--主键生成策略-->
			<generator class="identity"></generator> 
		</id>
		<!--使用property描述属性与字段的对应关系-->
		<property name="name" column="b_name"></property>
		<!--多对一-->
		<many-to-one name="customer" cascade="save-update" class="hibernate_oneToMany.Customer" column="c_customer_book_id"></many-to-one>
	</class>
</hibernate-mapping>

4.***********hibernate配置文件(仅供参考)********************

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
	<session-factory>
		<!--配置数据库连接的四个项-->
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql:///exam</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">123456</property>
		<!-- 设置连接提供者 -->
		<property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
		<!-- c3p0连接池的配置 -->
		<property name="hibernate.c3p0.max_size">20</property> <!-- 最大连接池 -->
		<property name="hibernate.c3p0.min_size">5</property> <!-- 最小连接数 -->
		<property name="hibernate.c3p0.timeout">120</property> <!-- 超时 -->
		<property name="hibernate.c3p0.idle_test_period">3000</property> <!-- 空闲连接 -->
		<!--将向数据库发送的sql显示出来-->
		<property name="hibernate.show_sql">true</property>
		<!--格式化sql-->
		<property name="hibernate.format_sql">true</property>
		<!--自动创建表-->
		<property name="hibernate.hbm2ddl.auto">update</property>
		<!--hibernate方言-->
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		<!--配置hibernate的映射文件所在位置-->
		<mapping resource="domain/User.hbm.xml"/>
		<mapping resource="domain/Product.hbm.xml"/>
		<!--一对多-->
		<mapping resource="hibernate_oneToMany/Customer.hbm.xml"/>
		<mapping resource="hibernate_oneToMany/Order.hbm.xml"/>
		<mapping resource="hibernate_oneToMany/Book.hbm.xml"/>
	</session-factory>
</hibernate-configuration>	




展开阅读全文

没有更多推荐了,返回首页