来龙去脉:

最开始sun这个土鳖设计了EJB2.0、EJB2.1那个时代。后来有人发现设计的很烂,不好用,就设计了hibernate,,人们发现用hibernate反而比EJB2.0、2.1好,hibernate迅速流行。土鳖一看,这事不好办呀,主流的被山寨的打倒了,他就把hibernate的创始人给挖过去定义了EJB3,所以hibernate的作者现在在但是EJB的项目组里。怎么定呢?牛就牛在,sun是官方,干脆定义一套标准,我不实现。我定义一套标准,大家的实现必须在我的这个框框里头。三流的公司卖产品,二流的公司卖服务,一流的公司卖标准。sun这个准一流就定义了标准,这个标准就叫JPA。hibernate一看,你这官方都定义了标准了,我不实现也不好意思呀,就写了Annotation支持官方的标准。由于参考了hibernate的实现,(作者就在那呢),所以这个标准 定义和hibernate非常符合。标准定义好后,可以不用hibernate,可以换成其他的具体实现。由于参考了和hibernate,定义的也不错,简单容易写功能强大,所以有流行趋势。Hibernate  Annotation和JPA  Annotation是一回事,但Hibernate  Annotation有一些自特定的扩展,只有在非常特殊的情况才能用上。

Annotation使用@+名字如:@override   ,@SuppressWarnings

Hibernate3.0后支持Annotation,目标是建立符合JPA标准的Annotation。

除了一般的包,需要另外加入三个包:

hibernate-annotations-3.2.0.ga.jar.zip

hibernate-commons-annotations-3.3.0.ga.jar    进行反射时需要的包

ejb3-persistence-3.3.1.jar.zip       符合JPA标准的Annotation的实现

这三个包在hibernate-annotations-3.4.0.GA里,可以去网上下一个。

写一个Teacher类:

package com.oracle.hibernate.model;

import javax.persistence.Entity;
import javax.persistence.Id; //@Entity,这是个实体类,hibernate可以替我管起来,跟数据库里某个表是对应的。不写任何东西,表示数据库里的表就叫Teacher
@Entity
public class Teacher { private int id;
private String name;
private String title ; //主键,加在相应的get方法
@Id
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
} }

可以看到,写了@Entity后会自动导入javax.persistence,很明显,它不再依赖于hibernate,他就是JPA的一个标准,hibernate是他的一个实现,也可以是别的实现如Toplink、JDO等,百度去看。

测试类:

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration; import com.oracle.hibernate.model.Student;
import com.oracle.hibernate.model.Teacher; public class TeacherTest { /**
* @param args
*/
public static void main(String[] args) {
Teacher t = new Teacher(); t.setId(1);
t.setName("teacher1");
t.setTitle("高级"); //配置new AnnotationConfiguration可以读关于Annotation的配置
Configuration cfg = new AnnotationConfiguration(); SessionFactory sf = cfg.configure().buildSessionFactory();
Session session = sf.openSession();//打开新的Session session.beginTransaction(); session.save(t); session.getTransaction().commit(); session.close(); //关闭session
sf.close(); //关闭工厂
} }

在hibernate.cfg.xml里加一句话:

<mapping class="com.oracle.hibernate.model.Teacher"/>

我们先在数据库建一个Teacher表,id是主键,也可以不建表,hibernate会自动帮你建。

效果:

hibernate的AnnotationHelloWorld的更多相关文章

  1. hibernate多对多关联映射

    关联是类(类的实例)之间的关系,表示有意义和值得关注的连接. 本系列将介绍Hibernate中主要的几种关联映射 Hibernate一对一主键单向关联Hibernate一对一主键双向关联Hiberna ...

  2. 解决 Springboot Unable to build Hibernate SessionFactory @Column命名不起作用

    问题: Springboot启动报错: Caused by: org.springframework.beans.factory.BeanCreationException: Error creati ...

  3. hibernate多对一双向关联

    关联是类(类的实例)之间的关系,表示有意义和值得关注的连接. 本系列将介绍Hibernate中主要的几种关联映射 Hibernate一对一主键单向关联Hibernate一对一主键双向关联Hiberna ...

  4. Hibernate中事务的隔离级别设置

    Hibernate中事务的隔离级别,如下方法分别为1/2/4/8. 在Hibernate配置文件中设置,设置代码如下

  5. Hibernate中事务声明

    Hibernate中JDBC事务声明,在Hibernate配置文件中加入如下代码,不做声明Hibernate默认就是JDBC事务. 一个JDBC 不能跨越多个数据库. Hibernate中JTA事务声 ...

  6. spring applicationContext.xml和hibernate.cfg.xml设置

    applicationContext.xml配置 <?xml version="1.0" encoding="UTF-8"?> <beans ...

  7. [原创]关于Hibernate中的级联操作以及懒加载

    Hibernate: 级联操作 一.简单的介绍 cascade和inverse (Employee – Department) Casade用来说明当对主对象进行某种操作时是否对其关联的从对象也作类似 ...

  8. hibernate的基本xml文件配置

    需要导入基本的包hibernate下的bin下的required和同bin下optional里的c3p0包下的所有jar文件,当然要导入mysql的驱动包了.下面需要注意的是hibernate的版本就 ...

  9. Maven搭建SpringMVC+Hibernate项目详解 【转】

    前言 今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这 ...

随机推荐

  1. SQLITE3的锁以及事务

    以下内容摘自<SQLITE权威指南>,下载地址http://download.csdn.net/detail/cxjchen/5643391   SQLITE的锁 在SQLite中,锁和事 ...

  2. Linux FIO

    FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎,包括:sync,mmap, libaio, posixaio, SG v3, splice, null, ...

  3. 接口IDisposable的用法

    C#的每一个类型都代表一种资源,而资源又分为两类: 托管资源  由CLR管理分配和释放的资源,即从CLR里new出来的对象. 非托管资源  不受CLR管理的对象,如Windows内核对象,或者文件.数 ...

  4. UWP开发入门(一)——SplitView

    接下来会写一个UWP(Universal Windows Platform)开发入门的系列,自己学习到哪里,有什么心得总结,就会写到哪里.本篇对适用于顶层导航的SplitView控件展开讨论. 首先S ...

  5. Could not find any resources for the specified culture or the neutral culture

    问题解决办法是: 打开资源文件,将access modifier:下拉项设置为“internal”即可

  6. sharepoint 2013 query slow

    计划: ==== 1. 调整SharePoint以及SQL端的网卡设置, 注意修改这些属性可能会导致网络暂时中断,但会很快恢复,不需要重启服务器. A. 以管理员权限运行CMD B. 关闭烟囱卸载状态 ...

  7. console使用技巧

    http://heikezhi.com/yuanyi/10%E4%B8%AAchrome%20console%E5%AE%9E%E7%94%A8%E5%B0%8F%E6%8A%80%E5%B7%A7 ...

  8. fatal: Not a git repository (or any parent up to mount point /home)

    问题:fatal: Not a git repository (or any parent up to mount point /home) 解决:git init

  9. python网络编程--TCP连接的三次握手(三报文握手)与四次挥手

    一.TCP连接 运输连接有三个阶段: 连接建立.数据传送和连接释放. 在TCP连接建立过程中要解决以下三个问题: 1,要使每一方能够确知对方的存在. 2.要允许双方协商一些参数(如最大窗口之,是否使用 ...

  10. “全栈2019”Java第一百一十章:局部内部类与匿名内部类区别详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...