Hibernate List集合

1.新建一个maven项目HibernateDemo

2.编写pom.xml文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.meterbox</groupId>
	<artifactId>HibernateDemo</artifactId>
	<packaging>war</packaging>
	<version>0.0.1-SNAPSHOT</version>
	<name>HibernateDemo Maven Webapp</name>
	<url>http://maven.apache.org</url>

	<!-- 属性配置 -->
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<log4j.version>1.2.17</log4j.version>
		<mysql.version>5.1.30</mysql.version>
	</properties>

	<dependencies>


		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>


		<!-- 添加Hibernate依赖 -->
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-core</artifactId>
			<version>3.6.10.Final</version>
		</dependency>


		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>${mysql.version}</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>1.6.1</version>
		</dependency>

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-nop</artifactId>
			<version>1.6.4</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.7.2</version>
		</dependency>

		<!-- 添加javassist -->
		<dependency>
			<groupId>javassist</groupId>
			<artifactId>javassist</artifactId>
			<version>3.11.0.GA</version>
		</dependency>
		<!-- jsp页面的jar -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.0.1</version>
		</dependency>
		<!-- 日志 -->
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>${log4j.version}</version>
		</dependency>
		<dependency>
			<groupId>commons-logging</groupId>
			<artifactId>commons-logging</artifactId>
			<version>1.2</version>
		</dependency>

	</dependencies>
	<build>
		<finalName>HibernateDemo</finalName>
	</build>
</project>

3.编写Person类

public class Person {

	private String id;
	private String name;
	private int age;
	private List<String> schools = new ArrayList<String>();
//getter setter方法。。。。
	}

4.编写Person.hbm.xml

<?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 package="cn.edu.hpu.collection.model">
	<class name="Person" table="table_person">
		<id name="id" type="java.lang.String">
			<generator class="uuid" />
		</id>
		<property name="name" type="java.lang.String">
		</property>
		<property name="age" type="java.lang.Integer">
		</property>
		<list name="schools" table="table_schools">
			<!-- 外键 -->
			<key column="personid" not-null="true"></key>
			<!-- 映射集合属性数据表的集合索引列 -->
			<list-index column="list_order" />
			<element type="string" column="school_name"></element>
		</list>
	</class>
</hibernate-mapping>

5.编写hibernate.cfg.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
"http://hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
	<session-factory>
		<property name="connection.driver_class">
			com.mysql.jdbc.Driver
		</property>
		<property name="connection.url">jdbc:mysql://localhost:3306/zhjdata?useUnicode=true&characterEncoding=UTF-8</property>
		<property name="connection.username">root</property>
		<property name="connection.password">123456</property>
		<!-- 显示SQL语句 -->
		<property name="show_sql">true</property>
		<property name="format_sql">true</property>
		
		<!-- 根据需要自动创建数据库 -->
		<property name="hbm2ddl.auto">update</property>
		
		<!-- 定义方言 -->
		<property name="dialect">
			org.hibernate.dialect.MySQL5Dialect
		</property>

        <!-- 指定连接池里最大连接数 -->
		<property name="hibernate.c3p0.max_size">20</property>
		<!-- 指定连接池里最小连接数 -->
		<property name="hibernate.c3p0.min_size">1</property>
		<!-- 指定连接池里连接的超时时长 -->
		<property name="hibernate.c3p0.timeout">5000</property>
		
        <!-- 指定连接池里最大缓存多少个Statement对象 -->
		<property name="hibernate.c3p0.max_statements">100</property>
		<property name="hibernate.c3p0.idle_test_period">3000</property>
		<property name="hibernate.c3p0.acquire_increment">2</property>
		<property name="hibernate.c3p0.validate">true</property>
        
        <mapping resource="cn/edu/hpu/collection/model/Person.hbm.xml"/>
	</session-factory>
</hibernate-configuration>

6.编写HibernateUtil类

package cn.edu.hpu.util;


import org.apache.log4j.Logger;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {

	/** ThreadLocal Session Map */
	public static final ThreadLocal<Session> SESSIONMAP = new ThreadLocal<Session>();
	private static final SessionFactory sessionFactory;
	private static final Logger LOGGER = Logger.getLogger("appender2");
	static {
		try {
			LOGGER.debug("HibernateUti.static - loading cofig");
			sessionFactory = new Configuration().configure("hibernate.cfg.xml")
					.buildSessionFactory();
			LOGGER.debug("HibernateUtil.static - end");
		} catch (Throwable ex) {
			ex.printStackTrace();
			LOGGER.error("HibernateUti error : ExceptionInInitializerError");
			throw new ExceptionInInitializerError(ex);
		}
	}

	private HibernateUtil() {

	}

	public static Session getSession() throws HibernateException {
		Session session = SESSIONMAP.get();

		if (session == null) {
			session = sessionFactory.openSession();
			SESSIONMAP.set(session);
		}

		return session;
	}

	public static void closeSession() throws HibernateException {
		Session session = SESSIONMAP.get();
		SESSIONMAP.set(null);

		if (session != null) {
			session.close();
		}
	}
}
7.配置日志文件log4j.properties

# 1.\u6587\u672C\u683C\u5F0F
# set level  
log4j.rootLogger=debug,appender2  
# output into file
log4j.appender.appender2=org.apache.log4j.FileAppender  
# file direct
# text file
log4j.appender.appender2.File=D:/data/logs/Log4JDemo02.log  
# output style
log4j.appender.appender2.layout=org.apache.log4j.TTCCLayout  
8.编写测试类PersonManger

package cn.edu.hpu.test;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;

import cn.edu.hpu.collection.model.Person;
import cn.edu.hpu.util.HibernateUtil;

public class PersonManger {

	@Test
	public void testSave() {
		Session session = HibernateUtil.getSession();
		Transaction trans = session.beginTransaction();
		Person p = new Person();
		p.setAge(29);
		p.setName("zhangHJ");
		List<String> schools = new ArrayList<String>();
		schools.add("小学");
		schools.add("中学");
		schools.add("大学");
		p.setSchools(schools);
		session.save(p);
		trans.commit();
		HibernateUtil.closeSession();

	}
}


10.结果显示





### 关于 UniApp 框架推荐资源与教程 #### 1. **Uniapp 官方文档** 官方文档是最权威的学习资料之一,涵盖了从基础概念到高级特性的全方位讲解。对于初学者来说,这是了解 UniApp 架构技术细节的最佳起点[^3]。 #### 2. **《Uniapp 从入门到精通:案例分析与最佳实践》** 该文章提供了系统的知识体系,帮助开发者掌握 Uniapp 的基础知识、实际应用以及开发过程中的最佳实践方法。它不仅适合新手快速上手,也能够为有经验的开发者提供深入的技术指导[^1]。 #### 3. **ThorUI-uniapp 开源项目教程** 这是一个专注于 UI 组件库设计实现的教学材料,基于 ThorUI 提供了一系列实用的功能模块。通过学习此开源项目的具体实现方式,可以更好地理解如何高效构建美观且一致的应用界面[^2]。 #### 4. **跨平台开发利器:UniApp 全面解析与实践指南** 这篇文章按照章节形式详细阐述了 UniApp 的各个方面,包括但不限于其工作原理、技术栈介绍、开发环境配置等内容,并附带丰富的实例演示来辅助说明理论知识点。 以下是几个重要的主题摘选: - **核心特性解析**:解释了跨端运行机制、底层架构组成及其主要功能特点。 - **开发实践指南**:给出了具体的页面编写样例代码,展示了不同设备间 API 调用的方法论。 - **性能优化建议**:针对启动时间缩短、图形绘制效率提升等方面提出了可行策略。 ```javascript // 示例代码片段展示条件编译语法 export default { methods: { showPlatform() { console.log(process.env.UNI_PLATFORM); // 输出当前平台名称 #ifdef APP-PLUS console.log('Running on App'); #endif #ifdef H5 console.log('Running on Web'); #endif } } } ``` #### 5. **其他补充资源** 除了上述提到的内容外,还有许多在线课程视频可供选择,比如 Bilibili 上的一些免费系列讲座;另外 GitHub GitCode 平台上也有不少优质的社区贡献作品值得借鉴研究。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值