注解配置的方式与xml很很多类似:

首先是需要加入4个jar包:hibernate-commons-annotations.jar 、 hibernate-annotations.jar、ejb3-persistence.jar 、 hibernate-jpa-2.0-api-1.0.1.Final.jar

使用注解和xml配置,获取Session的方法在hibernate4.0版本以后是一样的,方法如下:

         Configuration configuration=new Configuration();
configuration.configure();
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
Session session=sessionFactory.openSession();

下面是不同的地方:

(1)hibernate.hbm.xml 文件中把引用:xxx.hbm.xml改为引用实体类:

即把:<mapping resource="com/db/entity/Person.hbm.xml"/>

改为:<mapping class="com.db.entity.Person" />

(2):注解方式不需要在xxx.hbm.xml把实体类与表进行映射。而采用在实体类中进行注解。

注意:(1):实体类属性注解的时候,都注解在get方法前。

(2):如果在实体类中某些属性不注解:(属性和get都不写注解),默认为表字段名与实体类属性名一致。

(3):如果实体类的某个成员属性不需要存入数据库中,使用@Transient 进行注解就可以了。即类似于:(xxx.hbm.Xml配置中的某些字段不写(就是不需要对这个成员属性进行映射))

(4):表名称可以在实体类前进行注解。

(5):所有这些注解在:javax.persistence包下。而不是在hibernate包中。

User.java

@Entity
@Table(name="user")
public class User implements Serializable { private int id;
private String name; @Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="id",nullable=true)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
} @Column(name="name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
} }

hibernate.cfg.xml

 <hibernate-configuration>

 <session-factory>
<property name="dialect">
org.hibernate.dialect.MySQLInnoDBDialect
</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/mydb
</property>
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="myeclipse.connection.profile">MyDBAccount</property>
<property name="show_sql">true</property>
<mapping class="com.db.entity.User"/>
</session-factory> </hibernate-configuration>

Test.java

public class Test{

    public static void main(String[] args) {
// TODO Auto-generated method stub Session session=HibernateSessionFactory.getSession();
User user=new User();
user.setBname("丽丽");
session.beginTransaction();
session.save(user);
session.getTransaction().commit();
} }

执行的sql语句:

Hibernate: insert into user (name) values (?)

Hibernate注解配置与XML配置区别的更多相关文章

  1. Spring注解配置和xml配置优缺点比较

    Spring注解配置和xml配置优缺点比较 编辑 ​ 在昨天发布的文章<spring boot基于注解方式配置datasource>一文中凯哥简单的对xml配置和注解配置进行了比较.然后朋 ...

  2. Hibernate实现有两种配置,xml配置与注释配置

    hibernate实现有两种配置,xml配置与注释配置. (1):xml配置:hibernate.cfg.xml (放到src目录下)和实体配置类:xxx.hbm.xml(与实体为同一目录中) < ...

  3. hibernate实现有两种配置,xml配置与注释配置。<转>

    <注意:在配置时hibernate的下载的版本一定确保正确,因为不同版本导入的jar包可能不一样,所以会导致出现一些错误> hibernate实现有两种配置,xml配置与注释配置. (1) ...

  4. Spring的注解配置与XML配置之间的比较

    注释配置相对于 XML 配置具有很多的优势: 它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作. 如:使用 JPA 注释配置 ORM 映射时,我们就不需要指定 PO ...

  5. IDEA用maven创建springMVC项目和配置(XML配置和Java配置)

    1.DEA创建项目 新建一个maven project,并且选择webapp原型. 然后点击next 这里的GroupId和ArtifactID随意填写,但是ArtifactID最好和你的项目一名一样 ...

  6. Spring 中的事务操作、注解、以及 XML 配置

    事务 事务全称叫数据库事务,是数据库并发控制时的基本单位,它是一个操作集合,这些操作要么不执行,要么都执行,不可分割.例如我们的转账这个业务,就需要进行数据库事务的处理. 转账中至少会涉及到两条 SQ ...

  7. hibernate实现有两种配置,xml配置与注释配置。

    (1):xml配置:hibernate.cfg.xml (放到src目录下)和实体配置类:xxx.hbm.xml(与实体为同一目录中) <?xml version='1.0' encoding= ...

  8. SpringMVC基础配置(通过注解配置,非xml配置)

    SpringMVC是什么,有多火,我这里就不再啰嗦了,SpringMVC比Struts2好用太多,我在学校的时候私下里两种都接触过,对比之后果断选择了SpringMVC,后来在做Android应用开发 ...

  9. 死磕Spring之AOP篇 - Spring AOP注解驱动与XML配置

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读. Spring 版本:5.1 ...

随机推荐

  1. Spring框架解析

    在生活中我们会有很多依赖关系,我要写一个笔记,就要有本子,笔,两种物品,还有当事人我,一共三个对象. 1.本子:可以再上面写字,这是他是属性,可被书画: 2.笔:可以在很多东西上写写画画:这也是他的属 ...

  2. 常用px,pt,em换算及区别

    pt (point,磅):是一个物理长度单位,指的是72分之一英寸. px (pixel,像素):是一个虚拟长度单位,是计算机系统的数字化图像长度单位,如果px要换算成物理长度,需要指定精度DPI(D ...

  3. RSA,Miller-Rabin素数测试的源流及其证明

    一.RSA与公钥加密系统的起源与影响. 为了更好地突出公钥加密系统相对私钥加密系统的优势,让我们从这两个问题开始: 这个世界上如果没有公钥加密系统会怎么样呢?全用私钥加密系统会出现什么问题呢? 首先, ...

  4. TensorFlow框架(4)之CNN卷积神经网络

    1. 卷积神经网络 1.1 多层前馈神经网络 多层前馈神经网络是指在多层的神经网络中,每层神经元与下一层神经元完全互连,神经元之间不存在同层连接,也不存在跨层连接的情况,如图 11所示. 图 11 对 ...

  5. 关于 DropDownList 循环绑定中遇到的问题

    1绑定DataTable 简单直接下部分就ok了 this.DropDownList1.DataSource = DataTable; this.DropDownList1.DataTextField ...

  6. spring文件上传

    Spring文件上传 1,导包: <dependency> <groupId>javax.servlet</groupId> <artifactId>s ...

  7. URI和URL的区别 一起学习呗

    一直存在很多技术上的争论,其中最为妙的恐怕就是web地址应该叫什么的问题.通常情况就是这样:有人把地址栏的内容叫"URL",这时候有些人就来劲了:"不!其实那就是URI. ...

  8. 分享一个 jmeter ant的build.xml

    <?xml version="1.0" encoding="UTF-8"?> <project name="ant-jmeter-t ...

  9. js封装成插件-------Canvas统计图插件编写

    之前就说过,我想写一个canvas画统计图的插件,现在写好了 先说下实现的功能吧: 1.可以通过自定义X轴坐标属性和Y轴坐标属性按比例画出统计图 2.可以选择画折现图还是柱形统计图,或者两者都实现 3 ...

  10. 安装python虚拟环境

    虚拟环境: 之前安装python包的命令: sudo pip3 install 包名包的安装路径:/usr/local/lib/python3.5/dist-packages安装同一个包的不同版本,后 ...