- 浏览: 140799 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
renovatio:
...
JAVA的远程控制系统(远程监控)实现 -
xiaofan_0204:
有点恶心呀,少了一个类……………………
JAVA中HTTP的多线程下载程序 -
h286271819:
你奶奶,DownloadNetThread 类呢?
JAVA中HTTP的多线程下载程序 -
ileson:
LINUX 之旅 (-)起因 -
panshunchang:
<pre name="code" c ...
java 分布式RMI的简单使用
作者:shazi.
数据库的生成由配置文件自动生成。例子中两个实体类,学生类和教师类。一个学生可以由多个教师,一个教师也可以有多个学生。
主要代码如下:
(一)配置文件:hibernate-cfg.xml
xml 代码
- <?xml version='1.0' encoding='UTF-8'?>
- <!DOCTYPE hibernate-configuration PUBLIC
- "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
- <!-- Generated by MyEclipse Hibernate Tools. -->
- <hibernate-configuration>
- <session-factory>
- <property name="dialect">
- org.hibernate.dialect.MySQLDialect
- </property>
- <property name="connection.url">
- jdbc:mysql://localhost:3306/good
- </property>
- <property name="connection.username">root</property>
- <property name="connection.password">admin</property>
- <property name="connection.driver_class">
- com.mysql.jdbc.Driver
- </property>
- <property name="myeclipse.connection.profile">
- database
- </property>
- <property name="show_sql">true</property>
- <property name="jdbc.fetch_size">50</property>
- <property name="jdbc.batch_size">25</property>
- <property name="hbm2ddl.auto">true</property>
- <mapping resource="mapping/student.hbm.xml" />
- <mapping resource="mapping/teacher.hbm.xml" />
- </session-factory>
- </hibernate-configuration>
(二)日志文件:log4j.xml
xml 代码
- ### direct log messages to stdout ###
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.Target=System.out
- log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
- log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
- ### direct messages to file hibernate.log ###
- #log4j.appender.file=org.apache.log4j.FileAppender
- #log4j.appender.file.File=hibernate.log
- #log4j.appender.file.layout=org.apache.log4j.PatternLayout
- #log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
- ### set log levels - for more verbose logging change 'info' to 'debug' ###
- log4j.rootLogger=info, stdout
- #log4j.logger.org.hibernate=info
- log4j.logger.org.hibernate=info
- ### log HQL query parser activity
- #log4j.logger.org.hibernate.hql.ast.AST=debug
- ### log just the SQL
- #log4j.logger.org.hibernate.SQL=debug
- ### log JDBC bind parameters ###
- log4j.logger.org.hibernate.type=info
- #log4j.logger.org.hibernate.type=debug
- ### log schema export/update ###
- log4j.logger.org.hibernate.tool.hbm2ddl=debug
- ### log HQL parse trees
- #log4j.logger.org.hibernate.hql=debug
- ### log cache activity ###
- #log4j.logger.org.hibernate.cache=debug
- ### log transaction activity
- #log4j.logger.org.hibernate.transaction=debug
- ### log JDBC resource acquisition
- #log4j.logger.org.hibernate.jdbc=debug
- ### enable the following line if you want to track down connection ###
- ### leakages when using DriverManagerConnectionProvider ###
- #log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace
(三)HibernateSessionFactory.java文件,主要是SessionFactory的创建和Session的创建。
java 代码
- package dao;
- import org.hibernate.HibernateException;
- import org.hibernate.Session;
- import org.hibernate.cfg.Configuration;
- /**
- * Configures and provides access to Hibernate sessions, tied to the
- * current thread of execution. Follows the Thread Local Session
- * pattern, see {@link http://hibernate.org/42.html }.
- */
- public class HibernateSessionFactory {
- /**
- * Location of hibernate.cfg.xml file.
- * Location should be on the classpath as Hibernate uses
- * #resourceAsStream style lookup for its configuration file.
- * The default classpath location of the hibernate config file is
- * in the default package. Use #setConfigFile() to update
- * the location of the configuration file for the current session.
- */
- private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
- private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
- private static Configuration configuration = new Configuration();
- private static org.hibernate.SessionFactory sessionFactory;
- private static String configFile = CONFIG_FILE_LOCATION;
- private HibernateSessionFactory() {
- }
- /**
- * Returns the ThreadLocal Session instance. Lazy initialize
- * the <code>SessionFactory</code> if needed.
- *
- * @return Session
- * @throws HibernateException
- */
- public static Session getSession() throws HibernateException {
- Session session = (Session) threadLocal.get();
- if (session == null || !session.isOpen()) {
- if (sessionFactory == null) {
- rebuildSessionFactory();
- }
- session = (sessionFactory != null) ? sessionFactory.openSession()
- : null;
- threadLocal.set(session);
- }
- return session;
- }
- /**
- * Rebuild hibernate session factory
- *
- */
- public static void rebuildSessionFactory() {
- try {
- configuration.configure(configFile);
- sessionFactory = configuration.buildSessionFactory();
- } catch (Exception e) {
- System.err
- .println("%%%% Error Creating SessionFactory %%%%");
- e.printStackTrace();
- }
- }
- /**
- * Close the single hibernate session instance.
- *
- * @throws HibernateException
- */
- public static void closeSession() throws HibernateException {
- Session session = (Session) threadLocal.get();
- threadLocal.set(null);
- if (session != null) {
- session.close();
- }
- }
- /**
- * return session factory
- *
- */
- public static org.hibernate.SessionFactory getSessionFactory() {
- return sessionFactory;
- }
- /**
- * return session factory
- *
- * session factory will be rebuilded in the next call
- */
- public static void setConfigFile(String configFile) {
- HibernateSessionFactory.configFile = configFile;
- sessionFactory = null;
- }
- /**
- * return hibernate configuration
- *
- */
- public static Configuration getConfiguration() {
- return configuration;
- }
- }
(四) 创建Student.java,POJO类。
java 代码
- package mapping;
- import java.util.HashSet;
- import java.util.Set;
- public class Student implements java.io.Serializable{
- private Integer id;
- private String name;
- private Set teacher=new HashSet();
- public Integer getId() {
- return id;
- }
- public void setId(Integer id) {
- this.id = id;
- }
- public Set getTeacher() {
- return teacher;
- }
- public void setTeacher(Set teacher) {
- this.teacher = teacher;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
(五)student.hbm.xml
xml 代码
- <?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">
- <!--
- Mapping file autogenerated by MyEclipse - Hibernate Tools
- -->
- <hibernate-mapping>
- <class name="mapping.Student" table="student">
- <id name="id" type="integer">
- <column name="ID" />
- <generator class="identity"></generator>
- </id>
- <property name="name" type="string">
- <column name="name" length="100" />
- </property>
- <set name="teacher" inverse="true" cascade="save-update" table="student_teacher">
- <key column="s_id" not-null="false">
- </key>
- <many-to-many class="mapping.Teacher" column="t_id" outer-join="true" />
- </set>
- </class>
- </hibernate-mapping>
(六)Teacher.java
java 代码
- package mapping;
- import java.util.HashSet;
- import java.util.Set;
- /**
- * Teacher generated by MyEclipse - Hibernate Tools
- */
- public class Teacher extends mapping.Student implements java.io.Serializable {
- // Fields
- private Integer id;
- private String name;
- private Set students = new HashSet(0);
- // Constructors
- /** default constructor */
- public Teacher() {
- }
- /** full constructor */
- public Teacher(String name, Set students) {
- this.name = name;
- this.students = students;
- }
- // Property accessors
- public Integer getId() {
- return this.id;
- }
- public void setId(Integer id) {
- this.id = id;
- }
- public String getName() {
- return this.name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public Set getStudents() {
- return this.students;
- }
- public void setStudents(Set students) {
- this.students = students;
- }
- }
(七)teacher.bhm.xml
xml 代码
- <?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">
- <!--
- Mapping file autogenerated by MyEclipse - Hibernate Tools
- -->
- <hibernate-mapping>
- <class name="mapping.Teacher" table="teacher">
- <id name="id" type="integer">
- <column name="id" />
- <generator class="native"></generator>
- </id>
- <property name="name" type="string">
- <column name="name" length="100" />
- </property>
- <set name="students" cascade="save-update" table="student_teacher">
- <key column="t_id" not-null="false">
- </key>
- <many-to-many class="mapping.Student" column="s_id" outer-join="true"/>
- </set>
- </class>
- </hibernate-mapping>
(八)测试类:Test.java,使用SchemaExport schemaExport = new SchemaExport(config);生成数据库代码。
java 代码
- package dao;
- import mapping.Student;
- import mapping.Teacher;
- import org.hibernate.Session;
- import org.hibernate.Transaction;
- import org.hibernate.tool.hbm2ddl.SchemaExport;
- public class Test {
- /**
- * @param args
- */
- public static void main(String[] args) {
- org.hibernate.cfg.Configuration config=new org.hibernate.cfg.Configuration().configure();
- System.out.println("Creating tables...");
- SchemaExport schemaExport = new SchemaExport(config);
- schemaExport.create(true, true);
- System.out.println("Table created.");
- Student s = new Student();
- s.setName("rose");
- Teacher t = new Teacher();
- t.setName("admin");
- s.getTeacher().add(t);
- t.getStudents().add(s);
- Session session = HibernateSessionFactory.getSession();
- Transaction tx = session.beginTransaction();
- session.save(t);
- session.save(s);
- tx.commit();
- session.close();
- }
- }
运行即可:
- manytomany.rar (38.9 KB)
- 下载次数: 40
发表评论
-
build.xml(xdoclet,hibernate,SchemaExportTask)
2007-08-04 16:49 2050xml 代码 xml version=" ... -
Hibernate 的Xdoclet模板
2007-07-21 08:23 1837xml 代码 <?xml version= ... -
Hibernate配置文件--hibernate.cfg.xml
2007-07-19 09:48 2957Hibernate的mysql配置。 xml 代码 ... -
Hibernate的Session管理之HibernateSessionFactory
2007-07-19 09:41 4749myeclipse 生成的hibernateUtil类,感觉实 ... -
三种整合 Struts 应用程序与 Spring 的方式
2007-07-14 17:04 1553URL:http://www.ibm.com/develo ... -
jspSmartUpload 实现jsp文件上传下载
2007-07-10 09:51 5379转载 www.csdn.net ... -
正则表达式收集
2007-03-20 14:36 775正则表达式收集 只能输入数字:"^[0-9]*$& ... -
经典正则表达式
2007-03-20 14:38 709转载 www.qysoft.net 正 ...
相关推荐
在Java的持久化框架Hibernate中,多对一(ManyToOne)关联关系是一种常见的对象关系映射(ORM)场景。这种关系通常出现在一个实体类拥有多条与另一个实体类相关的记录,而另一个实体类可能只有一条对应的记录。例如...
在Java的持久化框架Hibernate中,多对多(Many-to-Many)关联关系是一种常见的实体间关系类型,它表示一个实体可以与多个其他实体相关联,反之亦然。本源码示例将深入探讨如何使用Hibernate来配置和管理这种复杂的...
在Hibernate中,多对多关系通过中间表(也称为联接表或关联表)来实现,这个表包含来自两个表的外键。 三、配置多对多映射 在Hibernate中,配置多对多映射通常需要以下几个步骤: 1. **实体类定义**:为每个实体...
- **定义**: Hibernate 是一款流行的开源对象关系映射(ORM)框架,它简化了数据库与 Java 对象之间的交互过程。 - **版本**: 本书针对 Hibernate 5.0 版本进行了更新和介绍,这是在 Java 社区中广泛使用的最新版本...
本实例将深入探讨Hibernate中的三种基本关联关系:一对一(One-to-One)、一对多(One-to-Many)以及多对多(Many-to-Many)的实现方式。 1. **一对一关联**: 一对一关联通常出现在两个实体之间存在唯一对应关系...
在Java的持久化框架Hibernate中,多对多(Many-to-Many)关系是数据库中常见的关联类型,它允许一个实体实例对应多个其他实体实例,反之亦然。在本案例中,我们将深入探讨如何使用Hibernate来处理多对多的关系映射,...
在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系数据库模型映射方式,用于处理两个实体之间存在多个实例互相关联的情况。本文将深入探讨Hibernate如何实现多对多关联映射,并通过实际例子解析相关...
- 在传统的Hibernate XML映射文件中,`<many-to-one>`标签用于定义多对一关系: ```xml ``` 3. **懒加载与急加载**: - Hibernate提供了两种加载策略:懒加载(Lazy Fetching)和急加载(Eager Fetching)。...
在Java的持久化框架Hibernate中,多对多(Many-to-Many)关联关系是一种常见的实体间关系类型,它表示一个实体可以与多个其他实体相关联,反之亦然。本示例"Hibernate多对多关联关系demo"将深入探讨如何在实际开发中...
在Java的持久化框架Hibernate中,多对多(Many-to-Many)关系是数据库中常见的关联类型,它表示两个实体类之间可以有多个对应的关系。例如,学生和课程就是一个典型的多对多关系,一个学生可以选修多个课程,而一个...
在Hibernate中,处理多对多关系需要定义两个实体类,每个实体类对应一个表,并在其中一个或两个实体类中声明`@ManyToMany`注解。这个注解用于表示两个实体之间的多对多关联。例如,我们有`Student`和`Course`两个类...
本教程将深入讲解Hibernate框架中的多对多(Many-to-Many)映射关系,这对于理解和应用Hibernate到实际项目中至关重要。 首先,我们需要理解多对多映射的基本概念。在数据库中,多对多关系是指两个表之间存在一对多...
总之,Hibernate的多对一和一对多操作不仅提供了灵活的关联管理,还允许开发者将复杂的数据关系逻辑封装在应用程序中,从而简化数据库设计,提高代码的可读性和可维护性。然而,这也要求开发者对Hibernate的映射机制...
本项目聚焦于Hibernate中的多对多关系映射,这是一种复杂但常见的数据库关联类型,适用于如用户角色、商品类别等场景。 **一、多对多关系** 在数据库设计中,多对多关系表示两个实体之间存在多个匹配的可能性。...
5. **操作关联**:在代码中,可以通过Hibernate的Session接口进行添加、删除、查询等操作,以维护多对多关系。 **数据库代码** 数据库代码部分可能包括创建相关表和中间表的SQL语句,以及填充数据的INSERT语句。...
本项目“hibernate一对多项目”旨在演示如何在JavaWeb应用中使用Hibernate处理一对多的关系映射。这里我们将深入探讨 Hibernate 的一对多关系、配置以及在实际项目中的应用。 首先,一对多关系在数据库中很常见,...
综上所述,这个压缩包提供了关于Hibernate关系映射的全面教程,包括多对多、一对一和一对多的关系配置,以及如何在Spring+Hibernate+Struts环境中应用这些关系。对于想要深入理解Hibernate并提升开发效率的Java...
在Java的持久化框架Hibernate中,处理数据库中的多对多关系是一项重要的任务。"角色(使用hibernate映射多对多的关系).zip"这个压缩包文件提供了一个实例,展示了如何利用Hibernate来映射数据库中的多对多关联。在...
例如,学生和课程的关系就是一个典型的多对多关系:一个学生可以选修多门课程,而一门课程也可以被多个学生选修。 在Hibernate中,实现多对多关系需要通过关联表(也称为中间表或连接表)来完成。这个关联表通常...
在Java的持久化框架Hibernate中,多对多(Many-to-Many)关系是数据库中常见的关联类型,它允许一个实体实例对应多个其他实体实例,反之亦然。这种关系在现实生活中很常见,例如,学生可以注册多门课程,课程也可以...