hibernate_annotation
framework开发手册

Framework架构手册前言本框架基于Struts2.0+Spring2.5+Hibernate3.2架构所建,用于中小型企业网站或管理系统基础架构。
下面先简要介绍一下struts,spring,hibernate●Struts简介Struts是一个基于Sun J2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。
Struts把Servlet、JSP、自定义标签和信息资源(message resources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。
●Spring简介Spring是一个解决了许多在J2EE开发中常见的问题的强大框架。
Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。
Spring的架构基础是基于使用JavaBean属性的Inversion of Control容器。
然而,这仅仅是完整图景中的一部分:Spring在使用IoC容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。
Spring提供了唯一的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了效率并且减少了可能的错误。
Spring的数据访问架构还集成了Hibernate和其他O/R mapping解决方案。
Spring还提供了唯一的事务管理抽象,它能够在各种底层事务管理技术,例如JTA 或者JDBC事务提供一个一致的编程模型。
Spring提供了一个用标准Java语言编写的AOP 框架,它给POJOs提供了声明式的事务管理和其他企业事务--如果你需要--还能实现你自己的aspects。
这个框架足够强大,使得应用程序能够抛开EJB的复杂性,同时享受着和传统EJB相关的关键服务。
Spring还提供了可以和IoC容器集成的强大而灵活的MVC Web框架。
●Hibrenate简介Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
JAVAWEB面试题(含答案)

1、jsp和servlet的区别、共同点、各自应用的范围??JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。
JSP编译后是“类servlet”。
Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。
而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。
JSP侧重于视图,Servlet主要用于控制逻辑。
在struts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层.2、cookie和session的作用、区别、应用范围,session的工作原理Cookie:主要用在保存客户端,其值在客户端与服务端之间传送,不安全,存储的数据量有限。
Session:保存在服务端,每一个session在服务端有一个sessionID作一个标识。
存储的数据量大,安全性高。
占用服务端的内存资源。
3、jstl是什么?优点有哪些??JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,由四个定制标记库(core、format、xml和sql)和一对通用标记库验证器(ScriptFreeTLV和PermittedTaglibsTLV)组成。
优点有:最大程序地提高了WEB应用在各应用服务器在应用程序服务器之间提供了一致的接口,最大程序地提高了1、在应用程序服务器之间提供了一致的接口,之间的移植。
2、简化了JSP和WEB应用程序的开发。
3、以一种统一的方式减少了JSP中的scriptlet代码数量,可以达到没有任何scriptlet 代码的程序。
在我们公司的项目中是不允许有任何的scriptlet代码出现在JSP中。
4、允许JSP设计工具与WEB应用程序开发的进一步集成。
相信不久就会有支持JSTL的IDE 开发工具出现。
4、j2ee的优越性主要表现在哪些方面?MVC模式a、J2EE基于JAVA技术,与平台无关b、J2EE拥有开放标准,许多大型公司实现了对该规范支持的应用服务器。
Causedby:org.hibernate.hql.internal.ast.Query。。。

Causedby:org.hibernate.hql.internal.ast.Query。
引言:在基于SpringData/JPA来快速开发若干功能过程中,碰到了table is not Mapped问题,经过一番辛苦的调试测试之后,才发现了一个@Entity的属性name的妙用。
1. 问题的提出场景描述:在开发中,做几个功能类似的模块,但代码需要独立,方便后续的独立部署。
故出现了很多包路径不同,但是类的名称类似的类。
在Model中定义了很多名称相同的实体类,都是以@Entity来定义的。
[html] view plain copy1. @Entity2. @Table(name="table1")3. public class Model1 {4. ........5. }在项目加载过程中,出席那了以下错误信息:[html] view plain copy1. SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener2. org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [META-INF/spring-hibernate.xml]: Invocation of init method fa3. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1513)4. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521)5. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)6. at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)7. at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)8. at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)9. at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:191)10. at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1117)11. at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:922)12. at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)13. at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:410)14. at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)15. at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)16. at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4135)17. at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630)18. at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)19. at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)20. at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)21. at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)22. at org.apache.catalina.startup.Embedded.start(Embedded.java:825)23. at org.codehaus.mojo.tomcat.AbstractRunMojo.startContainer(AbstractRunMojo.java:558)24. at org.codehaus.mojo.tomcat.AbstractRunMojo.execute(AbstractRunMojo.java:255)25. at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)26. at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)27. at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)28. at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)29. at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)30. at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)31. at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)32. at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)33. at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:347)34. at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:154)35. at org.apache.maven.cli.MavenCli.execute(MavenCli.java:582)36. at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214)37. at org.apache.maven.cli.MavenCli.main(MavenCli.java:158)38. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)39. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)40. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)41. at ng.reflect.Method.invoke(Method.java:597)42. at unchEnhanced(Launcher.java:289)43. at unch(Launcher.java:229)44. at uncher.mainWithExitCode(Launcher.java:415)45. at uncher.main(Launcher.java:356)46. Caused by: javax.persistence.PersistenceException: [PersistenceUnit: myPersistenceUnit] Unable to build EntityManagerFactory47. at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:924)48. at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:899)49. at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:76)50. at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:290)51. at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:310)52. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1572)53. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1510)54. ... 42 more55. Caused by: org.hibernate.AnnotationException: Use of the same entity name twice: OrderEntity56. at org.hibernate.cfg.annotations.EntityBinder.bindEntity(EntityBinder.java:403)57. at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:602)58. at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3568)59. at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3522)60. at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1379)61. at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1784)62. at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:96)63. at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:914)64. ... 48 more65. Caused by: org.hibernate.DuplicateMappingException: duplicate import: OrderEntity refers to both com.creditease.bsettle.pay.model.OrderEntity and com.creditease.bsettle.expense.model.OrderEntity (try us66. at org.hibernate.cfg.Configuration$MappingsImpl.addImport(Configuration.java:2674)67. at org.hibernate.cfg.annotations.EntityBinder.bindEntity(EntityBinder.java:396)68. ... 55 more2. 问题分析在项目代码中,的确定义了2个OrderEntity的class,但是他们是处于不同的项目包中的,所以从Java类层次上说,是不会冲突的。
Hibernate注解

Hibernate注解常用的hibernate annotation标签如下:@Entity--注释声明该类为持久类。
@Table(name="promotion_info")--持久性映射的表(表名="promotion_info)。
@Column(name=”DESC”,nullable=false,length=512)--用于指定持久属性或字段的映射列。
@Id--注释可以表明哪种属性是该类中的独特标识符(即相当于数据表的主键)。
@GeneratedValue--定义自动增长的主键的生成策略。
@Transient--将忽略这些字段和属性,不用持久化到数据库。
@Temporal(TemporalType.TIMESTAMP)--声明时间格式。
@Enumerated--声明枚举@Version--声明添加对乐观锁定的支持@OneToOne--可以建立实体bean之间的一对一的关联@OneToMany--可以建立实体bean之间的一对多的关联@ManyToOne--可以建立实体bean之间的多对一的关联@ManyToMany--可以建立实体bean之间的多对多的关联@Formula--一个SQL表达式,这种属性是只读的,不在数据库生成属性(可以使用sum、average、max等)@OrderBy--Many端某个字段排序(List)下面是对以上常用Hibernate注解标签的详细介绍与举例:@Entity--注释声明该类为持久类。
将一个Javabean类声明为一个实体的数据库表映射类,最好实现序列化.此时,默认情况下,所有的类属性都为映射到数据表的持久性字段.若在类中,添加另外属性,而非映射来数据库的, 要用下面的Transient来注解.@Table(name="promotion_info")--持久性映射的表(表名="promotion_info).@T able是类一级的注解,定义在@Entity下,为实体bean映射表,目录和schema的名字,默认为实体bean的类名,不带包名.示例:@Entity@T able(name="CUST", schema="RECORDS")public class Customer { ... }@Column(name=”DESC”,nullable=false,length=512)--用于指定持久属性或字段的映射列。
struts2+spring+hibernate整合步骤

引用struts2、hibernate、spring所需jar包struts-core-2.x.x.jar ----struts核心包xwork-core-2.x.x.jar -----身体ruts在其撒很难过构建ognl-2.6.x.jar ----对象导航语言freemarker-2.3.x.jar ------struts2的ui标签的模板使用commons-fileupload-1.2.x.jar ----文件上传组件 2.1.6版本后需加入此文件struts-spring-plugin-2.x.x.jar ---用于struts2继承spring的插件hibernate核心安装包下的(下载路径:/ ,点击Hibernate Core 右边的download)hibernate2.jarlib\bytecode\hibernate-cglib-repack-2.1_3.jarlib\required\*.jarhibernate安装包下的(下载路径:/;点击Hibernate Annotations 右边的下载)hibernate-annotations.jarlib\ejb3-persistence.jar、hibernate-commons-annotations.jar hibernate针对JPA的实现包(下载路径:/ ,点击Hibernate Entitymanager右边下载)hibernate-entitymanager.jarlib\test\log4j.jar、 slf4j-log4j12.jarspring安装包下的dist\spring.jarlib\c3p0\c3p0-0.9.1.2.jarlib\aspecti\aspectjweaver.jaraspectjrt.jarlib\colib\cglib-nodep-2.1_3.jarlib\j2ee\common-annotations.jarvlib\log4j\log4j-1.2.15.jarlib\jakarta-commons\commons_loggin.jar数据库驱动包引用创建mysql数据库ssh 设置编码为utf-8 语句:create database ssh character set 'utf8' collate 'utf8_general_ci'引用1.先整合spring和hibernate*将spring和hibernate的jar包放入lib下;*创建spring的beans.xml配置文件Java代码1.<?xml version="1.0" encoding="UTF-8"?>2.<beans xmlns="/schema/beans"3. xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"4. xmlns:aop="/schema/aop"xmlns:tx="/schema/tx"5. xsi:schemaLocation="/schema/beans6./schema/beans/spring-beans-2.5.xsd7. /schema/context8./schema/context/spring-context-2.5.xsd 9. /schema/aop/schema/aop/spring-aop-2.5.xsd10. /schema/tx/schema/tx/spring-tx-2.5.xsd">11.12. <!-- 将bean交由spring管理可以用<bean></bean>和扫描加注 -->13. <!--14. 扫描该包及该包下的子包15. -->16. <context:component-scanbase-package="com.yss"></context:component-scan>17.18.19. <!-- 集成hibernate sessionFactory单例模式线程安全创建耗内存-->20. <!-- 将hibernate的事务也交由spring管理 -->21. <bean id="dataSource"class="boPooledDataSource"22. destroy-method="close">23. <property name="driverClass"value="org.gjt.mm.mysql.Driver" />24. <property name="jdbcUrl"25.value="jdbc:mysql://localhost:3306/ssh?useUnicode=true&characterE ncoding=UTF-8" />26. <property name="user" value="root" />27. <property name="password" value="root" />28. <!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize 之间。
Hibernate注释大全

)
public Set<Monkey> getTrainedMonkeys() {
...
}
@Entity
public class Monkey {
... //no bidir
用 cascading 实现传播持久化(Transitive persistence)
cascade 属性接受值为 CascadeType 数组,其类型如下:
? CascadeType.PERSIST: cascades the persist (create) operation to associated entities persist() is called or if the entity is managed 如果一个实体是受管状态,或者当 persist() 函数被调用时,触发级联创建(create)操作。
@SecondaryTable(name="Cat2", uniqueConstraints={
@UniqueConstraint(columnNames={"storyPart2"})})
})
public class Cat implements Serializable {
...
}
public class MyDao {
doStuff() {
Query q = s.getNamedQuery("night.moreRecentThan");
q.setDate( "date", aMonthAgo );
Hibernate介绍及Hibernate4新特性

2、引入了“Services”API
• Hibernate中新增的另一个重要特性就是 “Services”API规范。除了标准的内建服 务外,你还可以通过该API以其他几种方式 扩展 Hibernate。现在已经有了几种方式可 以插入到Hibernate内核中,但Service API 则提供了一种标准方式来实现这一点。
1、多租户构架支持
• 所谓多租户架构,就是将大型的企业应用划分为 虚拟的多个客户端/客户(又叫做租户)而不必将 所有数据放在一个共享空间中。该原则改进了管 理、监控, 甚至是安全,对于大型的服务提供商 来说非常有帮助。提供云基础设施的公司也会从 多租户架构中获益颇丰。该原则有几种实现方式, 列举如下:
1、历史与背景
1、历史与背景
b、持久化层(如图1右)
• (1)什么叫持久化?
– 持久(Persistence),即把数据(如内存中的对象)保 存到可永久保存的存储设备中(如磁盘)。持久化的主要 应用是将内存中的数据存储在关系型的数据库中,当然也 可以存储在磁盘文件中、XML数据文件中等等。
• (2)什么叫持久层?
1、历史与背景
• 常见的ORM中间件有:
– – – – – – – – – Apache OJB (/ojb/) Cayenne (/cayenne/) Jaxor () Hibernate () iBatis () jRelationalFramework () mirage (/en/oss/mirage/toon) SMYLE (http://www.drjava.de/smyle) TopLink (/products/ias/toplink/index.html)
学校内网开发要求

内网开发要求一、开发环境●网站开发以J2EE作为开发平台,以MyEclipse作为开发工具,MySQL作为数据库,基于SSH2框架技术。
版本要求:1.Struts版本在Struts2.1.6以上;2.Hibernate版本在hibernate3.3.2以上,使用配置采取以HibernateAnnotation注解的形式,ID生成策略以native的形式;3.Spring 版本在Spring 2.5.6以上,数据源以数据连接池的形式操作;4.应用服务器以Apache Tomcat 7.0;5.数据库以MySQL 5.5;●前端用户界面开发,以基于RIA的AJAX应用,选用EXTJS或者Flex的富客户端的前端框架。
●数据建模方面,以PowerDesigner作为建模工具,需要有整个网站的概念数据模型(CDM)和物理数据模型(PDM)的模型视图,以PDM模型视图,生成建立数据库。
以方便后续网站的扩展和维护。
(项目交付时,需包含CDM、PDM模型文档)二、设计开发要求●网站开发,坚持以约定优于配置的原则。
●登录方式,整个网站以一站式登录方式,用户名、密码信息以MD5进行加密。
对于需要验证的地方,提供校验码功能。
●网站源文件下,依据规范,建立合适的包层次结构,根目录以com.sanyuan.cms●程序开发过程中,为相应类、方法、成员变量、以及配置文件,添加相应中文注释,包含功能作用相关描述。
●网站开发、数据库、配置文件所选字符集为GBK。
●设置合理的网站结构,建立必要的文件夹,并将资源文件归类到相应文件夹下。
例如:images、js、css、plugins(放置第三方插件,例如:富文本编辑器等)●对于上传的资源、文档,程序操作上,将上传文件保存到非应用服务器的磁盘目录下,方便管理操作。
备注:不可将资源文件(例如:头像素材)保存到数据库中。
●可结合AOP,建立日志系统。
●网站的数据库设计,在命名规则方面,依据模块,进行分类,为表名设置前缀。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Hibernate Annotation 使用hibernate Annotation来映射实体准备工作下载hibernate-distribution-3.3.2.GAhibernate-annotations-3.4.0.GAslf4j导入相关依赖包Hibernate HOME:\hibernate3.jar\lib\bytecode(二进制)\lib\optional(可选的)\lib\required(必须的)导入required下的所有jar包antlr-2.7.6.jarcommons-collections-3.1.jardom4j-1.6.1.jarhibernate3.jarjavassist-3.9.0.GA.jarjta-1.1.jarslf4j-api-1.5.10.jarslf4j-log4j12-1.5.10.jarlog4j-1.2.14.jarmysql.jar---Annotation包ejb3-persistence.jarhibernate-annotations.jarhibernate-commons-annotations.jar简单的例子,通过annotation注解来映射实体PO1、建立(Java Project)项目:hibernate_0100_annotation_HelloWorld_default2、在项目根下建立lib目录a)导入相关依赖jar包antlr-2.7.6.jarcommons-collections-3.1.jardom4j-1.6.1.jarejb3-persistence.jarhibernate-annotations.jarhibernate-commons-annotations.jarhibernate3.jarjavassist-3.9.0.GA.jarjta-1.1.jarlog4j-1.2.14.jarmysql.jarslf4j-api-1.5.10.jarslf4j-log4j12-1.5.10.jar3、建立PO持久化类cn.serup.model.Teacher 内容如下package cn.serup.model;import javax.persistence.Entity;import javax.persistence.Id;//@Entity表示该是实体类@Entitypublic class Teacher {private int id ;private String username ;private String password ;//ID为主键,主键手动分配@Idpublic int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {ername = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}4、在src目录中建立hibernate.cfg.xml(hibernate配置文件)文件,内容如下<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><property name="connection.url">jdbc:mysql://localhost/hibernate</property> <property name="ername">root</property><property name="connection.password">saber</property><property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property><property name="show_sql">true</property><!-- 独立线程运行,如果通过getCurrentSession()来获得Session,需要设置如下 --><property name="current_session_context_class">thread</property><!-- 映射持久化类 --><mapping class="cn.serup.model.Teacher"/></session-factory></hibernate-configuration>5.、建立新的源码包testa)编写单元测试,结构如下cn.serup.hibernate.test.TeacherTest 内容如下:package cn.serup.hibernate.test;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.AnnotationConfiguration;import org.hibernate.tool.hbm2ddl.SchemaExport;import org.junit.AfterClass;import org.junit.BeforeClass;import org.junit.Test;import cn.serup.model.Teacher;public class TeacherTest {private static SessionFactory sessionFactory ;@Testpublic void testSaveTeacher() {Teacher t = new Teacher() ;t.setId(2) ;t.setUsername("努尔哈赤") ;t.setPassword("12345") ;Session session = sessionFactory.getCurrentSession() ;session.beginTransaction() ;session.save(t) ;session.beginTransaction().commit() ;}@BeforeClasspublic static void beforeClass() {new SchemaExport(new AnnotationConfiguration().configure()).create(true, true) ;sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory() ;}@AfterClasspublic static void afterClass() {sessionFactory.close() ;}}Annotation表名称与字段映射,长度1、项目:hibernate_0200_annotation_column2、表名称映射,在默认情况下使用@Entity,则使用类名做为表名3、所有的注解写在get()方法上面4、表名映射a)@Table(name="t_teacher")3、字段映射a)默认情况下,则使用属性名称来作为列名(字段名)b)在get()方法上写注解i.@Column(name="t_username")ii.长度iii.@Column(name="t_username",length=35)c)默认情况下会将所有的属性映射到表中,如果不想某个属性映射到表中,如下编写i.@Transient(瞬时、临时(或者透明))Annotation映射主键属性(ID生成策略)1、项目:hibernate_0300_annotation_ID2、使用@Id注解可以将实体bean中的某个属性定义为标识符(identifier),该属性的值可以通过应用自身进行设置(ID手动分配,但不能重复)3、(EJB3规范)也可以通过Hiberante生成(推荐). 使用@GeneratedValue注解可以定义该标识符的生成策略:∙AUTO - 可以是identity column类型,或者sequence类型或者table类型,取决于不同的底层数据库.∙TABLE - 使用表保存id值∙IDENTITY - identity column∙SEQUENCE - sequenceAUTO相当于XML映射文件中的Native4、AUTO ,写上@GeneratedValue则会默认选择AUTO来生成主键,会根据你的方言来选择数据库提供的自增机制,作为主键的生产策略,如果数据库是MySQL,则使用auto_increment@Id@GeneratedValue//或者@GeneratedValue(strategy=GenerationType.AUTO)public int getId() { .... }5、IDENTITY 取得最大的ID值+1,作为主键@Id@GeneratedValue(strategy=GenerationType.IDENTITY)public int getId() { .... }6、TABLE 使用hilo(高低位算法,来产生主键)@Id@GeneratedValue(strategy=GenerationType.TABLE)public int getId() { .... }7、SEQUENCE Oracle的自增机制@Id@GeneratedValue(strategy=GenerationType.SEQUENCE)public int getId() { .... }使用Oracle的SEQUENCE 的话。