好久没有写博了,这一段时间一直再学Sqring同时也忙着学校的考试也就没有什么时间来写。今天就给大家看一看我学Hibernate时的同学给的一个学校的“新手上路”吧。
新手上路hibernate使用之一
问题一: hibernate是什么?
hibernate一种ORM工具,是连接 java 应用程序和关系数据库的中间件,这是对JDBC的封装,主要负责 java 对象的持久化.
问题二:hibernate中所需要的各 jar 分别起什么作用?
hibernate3.jar 编译hibernate所必须的jar 文件
第三方 jar文件(即hibernate自身所使用的其它jar文件,有以下介绍的jar文件,目前阶级对于我们开发一个使用hibernate技术底层实现的项目已经够用了)
antlr-2.7.6rc1.jar :
ANTLR (ANother Tool for Language Recognition)
是一个PCCTS制定的语言工具,它为他创建认定者,程序编译者,翻译者提供
一个包括 java,c#和C++在内的语法描述框架,使用from 多态查询语句时需要它。
cglib-2.1.3.jar:
CGL (Code Generation Libray) 是一种高性能,高质量
的代码产生库, hibernate 用它来实现 po (persistent object)字节码的动态生成
asm.jar和asm-attrs.jar: ObjectWeb的字节码操纵框架,用来动态生成java代码。
commons-collections-2.1.1.jar : Apache Commons 包中的一个,包含了一些Apache
开发的集合类,功能比java.util.*;强大
commons-logging-1.0.4.jar: Jakarta的通用日志记录包
dom4j-1.6.1.jar: 是一个JAVA的XML API 类似于jdom,用来读写XML文件,dom4j是一个非常
优秀的JAVA XML API, 具有性能优异,功能强大和易使用的特点,同时它也是一个开放源代码
的软件,可以在 SourceForge上找到它。
eheache-1.1.jar: EHCahe是一个纯JAVA的进程中的缓存,它具有经下特性,快速、简单、为
hibernate充当可插入的缓存,最小的依赖性和全面的文档和测试。
jta.jar: java Transaction API (JTA) 规范的包,是指定事务和事务处理和分布式事务处理系统
之间的标准,JAVA接口,包括资源管理,应用服务,和事务应用程序。
log4j-1.2.9.jar: hibernate 使用 Commons Logging API 可以使用log4j作为实施,log的机制,如果
把log4j库放到上下文类目录中,commons Logging 就会使用log4j 和它上下文类路径找到的log4j.properties文件
ant.jar:
Ant编译工具的jar包,用来编译Hibernate源代码的。如果你不准备修改和编译Hibernate源代码,那么就没有什么用,可选的jar包
c3p0.jar:
C3PO是一个数据库连接池,Hibernate可以配置为使用C3PO连接池。如果你准备用这个连接池,就需要这个jar包。
jaas.jar:
JAAS是用来进行权限验证的,已经包含在JDK1.4里面了。所以实际上是多余的包。
有了以上基本的jar文件,对于我们现阶段利用hibernate开发一般的项目已经足够了。
问题三:hibernate.cfg.xml详解?
<property name="show_sql">true</property> 是否打印hibernate执行的SQL语句
<property name="format_sql">true</property> 打印sql语句时是否执行格式化
<property name="dialect">org.hibernate.dialect.MySQLDialect</property> 配置数据库的方言,主要是根据底层的数据库不同产生不同的sql语句
<property name="connection.driver_class">com.mysql.jdbc.Driver</property> 配置驱动程序名
<property name="connection.url">jdbc:mysql://localhost:3306/xubindb</property> 配置驱动程序URL
<property name="connection.username">root</property> 配置用户名
<property name="connection.password">1234</property> 配置密码
<mapping resource="xubin/ums/entity/Student.hbm.xml"/> 指定映射的实体类的配置文件
问题四:xxxx.hbm.xml详解?
<hibernate-mapping package="xubin.ums.entity"> 指定映射实体类的包名
<class name="Person" table="person"> 实体类名映射表名
<id name="id" column="id"> ID生成策略
<generator class="native"/>
</id>
<property name="name" column="name"/> 实体类中的属性名映射表中的字段名
</class>
</hibernate-mapping>
问题五:写hibernate代码时要注意什么?
1、首先要确保把hibernate所需用要的jar文件全部加入 classpath中(hibernate3.jar, hibernate所需要的第三方jar,以及数据库的驱动等)
2、配置hibernate.cfg.xml文件,注意程序要访问底层数据库的类型而采用不同的配置
3、配置xxxx.hbm.xml文件,把实体类的各部分分别与数据库的表相映射起来
4、编程hibernate操作的代码
Configuration config = new Configuration().configure();// 初始化并读取hibernate.cfg.xml文件
sessionFactory = config.buildSessionFactory(); //取得一个会话工厂
Session session = sessionFactory.openSession();//利用会话工厂得到一个会话实体
Transaction trans = session.beginTransaction();//设置事务的开始
session.save(obj); //持久化对象obj
trans.commit(); //提交事务
session.close();//关闭会话释放资源
问题六: hibernate中的ID生成策略。
hilo 高低位算法 : 使用时要建成一个单行单列的表,利用列的值根据算法来生成
increment: 只用于测试用,此操作只能限于一个线程操作
sequence: 针对oracle 数据库来生成的ID规则
seqhilo: 利用 sequence 当作种子来生成
uuid: 利用IP和时间来生成唯一的
identity: 针对 mysql db2 sysbase 等不同的底层数据库方言来生成
native: 跨数据库平台的生成规则, 让自己去判断数据库来生成(identity , sequence , hilo 三种选)
assigned: 自定义的,意思就是自己要在程序中手动的指定值
foreign:借用别的表的主键来生成ID
descriminator: 继承关系映射时使用,整个层次一张表的建模时使用
新手上路hibernate使用之一
问题一: hibernate是什么?
hibernate一种ORM工具,是连接 java 应用程序和关系数据库的中间件,这是对JDBC的封装,主要负责 java 对象的持久化.
问题二:hibernate中所需要的各 jar 分别起什么作用?
hibernate3.jar 编译hibernate所必须的jar 文件
第三方 jar文件(即hibernate自身所使用的其它jar文件,有以下介绍的jar文件,目前阶级对于我们开发一个使用hibernate技术底层实现的项目已经够用了)
antlr-2.7.6rc1.jar :
ANTLR (ANother Tool for Language Recognition)
是一个PCCTS制定的语言工具,它为他创建认定者,程序编译者,翻译者提供
一个包括 java,c#和C++在内的语法描述框架,使用from 多态查询语句时需要它。
cglib-2.1.3.jar:
CGL (Code Generation Libray) 是一种高性能,高质量
的代码产生库, hibernate 用它来实现 po (persistent object)字节码的动态生成
asm.jar和asm-attrs.jar: ObjectWeb的字节码操纵框架,用来动态生成java代码。
commons-collections-2.1.1.jar : Apache Commons 包中的一个,包含了一些Apache
开发的集合类,功能比java.util.*;强大
commons-logging-1.0.4.jar: Jakarta的通用日志记录包
dom4j-1.6.1.jar: 是一个JAVA的XML API 类似于jdom,用来读写XML文件,dom4j是一个非常
优秀的JAVA XML API, 具有性能优异,功能强大和易使用的特点,同时它也是一个开放源代码
的软件,可以在 SourceForge上找到它。
eheache-1.1.jar: EHCahe是一个纯JAVA的进程中的缓存,它具有经下特性,快速、简单、为
hibernate充当可插入的缓存,最小的依赖性和全面的文档和测试。
jta.jar: java Transaction API (JTA) 规范的包,是指定事务和事务处理和分布式事务处理系统
之间的标准,JAVA接口,包括资源管理,应用服务,和事务应用程序。
log4j-1.2.9.jar: hibernate 使用 Commons Logging API 可以使用log4j作为实施,log的机制,如果
把log4j库放到上下文类目录中,commons Logging 就会使用log4j 和它上下文类路径找到的log4j.properties文件
ant.jar:
Ant编译工具的jar包,用来编译Hibernate源代码的。如果你不准备修改和编译Hibernate源代码,那么就没有什么用,可选的jar包
c3p0.jar:
C3PO是一个数据库连接池,Hibernate可以配置为使用C3PO连接池。如果你准备用这个连接池,就需要这个jar包。
jaas.jar:
JAAS是用来进行权限验证的,已经包含在JDK1.4里面了。所以实际上是多余的包。
有了以上基本的jar文件,对于我们现阶段利用hibernate开发一般的项目已经足够了。
问题三:hibernate.cfg.xml详解?
<property name="show_sql">true</property> 是否打印hibernate执行的SQL语句
<property name="format_sql">true</property> 打印sql语句时是否执行格式化
<property name="dialect">org.hibernate.dialect.MySQLDialect</property> 配置数据库的方言,主要是根据底层的数据库不同产生不同的sql语句
<property name="connection.driver_class">com.mysql.jdbc.Driver</property> 配置驱动程序名
<property name="connection.url">jdbc:mysql://localhost:3306/xubindb</property> 配置驱动程序URL
<property name="connection.username">root</property> 配置用户名
<property name="connection.password">1234</property> 配置密码
<mapping resource="xubin/ums/entity/Student.hbm.xml"/> 指定映射的实体类的配置文件
问题四:xxxx.hbm.xml详解?
<hibernate-mapping package="xubin.ums.entity"> 指定映射实体类的包名
<class name="Person" table="person"> 实体类名映射表名
<id name="id" column="id"> ID生成策略
<generator class="native"/>
</id>
<property name="name" column="name"/> 实体类中的属性名映射表中的字段名
</class>
</hibernate-mapping>
问题五:写hibernate代码时要注意什么?
1、首先要确保把hibernate所需用要的jar文件全部加入 classpath中(hibernate3.jar, hibernate所需要的第三方jar,以及数据库的驱动等)
2、配置hibernate.cfg.xml文件,注意程序要访问底层数据库的类型而采用不同的配置
3、配置xxxx.hbm.xml文件,把实体类的各部分分别与数据库的表相映射起来
4、编程hibernate操作的代码
Configuration config = new Configuration().configure();// 初始化并读取hibernate.cfg.xml文件
sessionFactory = config.buildSessionFactory(); //取得一个会话工厂
Session session = sessionFactory.openSession();//利用会话工厂得到一个会话实体
Transaction trans = session.beginTransaction();//设置事务的开始
session.save(obj); //持久化对象obj
trans.commit(); //提交事务
session.close();//关闭会话释放资源
问题六: hibernate中的ID生成策略。
hilo 高低位算法 : 使用时要建成一个单行单列的表,利用列的值根据算法来生成
increment: 只用于测试用,此操作只能限于一个线程操作
sequence: 针对oracle 数据库来生成的ID规则
seqhilo: 利用 sequence 当作种子来生成
uuid: 利用IP和时间来生成唯一的
identity: 针对 mysql db2 sysbase 等不同的底层数据库方言来生成
native: 跨数据库平台的生成规则, 让自己去判断数据库来生成(identity , sequence , hilo 三种选)
assigned: 自定义的,意思就是自己要在程序中手动的指定值
foreign:借用别的表的主键来生成ID
descriminator: 继承关系映射时使用,整个层次一张表的建模时使用