• Hibernate使用注释


    可以使用注释创建hibernate应用程序。 有许多注释可用于创建hibernate应用程序,如@Entity,@Id,@Table等。

    Hibernate注释基于JPA 2规范,并支持所有功能。
    所有JPA注释都在javax.persistence.*包中定义。 Hibernate EntityManager实现由JPA规范定义的接口和生命周期。

    使用hibernate注释的核心优点是我们不需要创建映射(*.hbm.xml)文件直接创建对象关联。 在这里,hibernate注释用于提供元数据。

    完整的项目结构图如下 -

    使用注释创建hibernate应用程序的示例

    创建具有注释的hibernate应用程序有4个步骤。分别如下 -

    • 为MySQL添加连接驱动程序的jar文件(如果数据库是MySQL)和注释
    • 创建持久化类
    • 在配置文件中添加持久化类的映射
    • 创建检索或存储持久对象的类

    1. 为MySQL和注释添加jar文件

    对于MySQL,您需要添加mysql-connector-java-5.1.40-bin.jar文件,以及 hibernate5的核心类库,如下所示 -

    2. 创建持久化类

    在这里,我们创建一个持久化类: Employee 。 并使用注释完成与数据库表:tb_employee 的映射关联。

    @Entity注释将此类标记为实体。
    @Table注释指定要保留此实体的数据的表名。 如果不使用@Table注释,hibernate将使用类名作为表名称bydefault
    @Id注释标记此实体的标识符。
    @Column注释指定此属性或字段的列的详细信息。如果未指定@Column注释,则属性名称将用作列名称bydefault

    Employee.java 文件的代码如下 -

    package com.yiibai;
    
    import javax.persistence.Entity;
    import javax.persistence.Id;
    import javax.persistence.Table;
    
    @Entity
    @Table(name = "tb_employee")
    public class Employee {
        @Id
        private int id;
        private String firstName, lastName;
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getFirstName() {
            return firstName;
        }
    
        public void setFirstName(String firstName) {
            this.firstName = firstName;
        }
    
        public String getLastName() {
            return lastName;
        }
    
        public void setLastName(String lastName) {
            this.lastName = lastName;
        }
    
    }
    
    Java

    3. 在配置文件中添加持久化类的映射

    打开hibernate.cfg.xml文件,并添加如下的映射资源条目:

    <mapping class="com.yiibai.Employee"/>
    
    XML

    现在完整的配置文件: hibernate.cfg.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="connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="connection.url">jdbc:mysql://localhost:3306/test</property>
            <property name="connection.username">root</property>
            <property name="connection.password">123456</property>
            <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
            <property name="show_sql">true</property>
    
            <mapping class="com.yiibai.Employee"/>
    
        </session-factory>
    
    </hibernate-configuration>
    
    XML

    4. 创建检索或存储持久对象的类

    在这个类中,我们只是将Employee类的对象存储到数据库中。 在这里,我们使用StandardServiceRegistryBuilder类和MetadataSources类从持久化类获取映射的信息。

    Test.java 测试类代码如下 -

    package com.yiibai;
    
    import org.hibernate.*;
    import org.hibernate.boot.MetadataSources;
    import org.hibernate.boot.registry.StandardServiceRegistry;
    import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
    import org.hibernate.cfg.*;
    
    public class Test {
        public static void main(String[] args) {
            //Session session = new AnnotationConfiguration().configure().buildSessionFactory().openSession();
            final StandardServiceRegistry registry = new StandardServiceRegistryBuilder().configure("hibernate.cfg.xml")
                    .build();
            // 2. 根据服务注册类创建一个元数据资源集,同时构建元数据并生成应用一般唯一的的session工厂
            SessionFactory sessionFactory = new MetadataSources(registry).buildMetadata().buildSessionFactory();
    
            /**** 上面是配置准备,下面开始我们的数据库操作 ******/
            Session session = sessionFactory.openSession();// 从会话工厂获取一个session
            Transaction t = session.beginTransaction();
    
            Employee e1 = new Employee();
            e1.setId(1001);
            e1.setFirstName("Yii");
            e1.setLastName("Bai");
    
            Employee e2 = new Employee();
            e2.setId(1002);
            e2.setFirstName("Min");
            e2.setLastName("Su");
    
            session.persist(e1);
            session.persist(e2);
    
            t.commit();
            session.close();
            System.out.println("successfully saved");
        }
    }
    
    Java

    运行上面(Test.java)示例,得到以下结果 -

    ... ...
    INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect
    Hibernate: insert into tb_employee (firstName, lastName, id) values (?, ?, ?)
    Hibernate: insert into tb_employee (firstName, lastName, id) values (?, ?, ?)
    successfully saved
    
    Shell

    查看数据库表 tb_employee 中的数据,应该会看到以下结果 -

  • 相关阅读:
    JQuery判断checkbox是否选中-批量
    浮动跟随
    当天时间戳范围
    统计兼职人员打标签数量
    submit回车提交影响
    js 数组去除空值
    js循环
    ajax
    滚动条位置
    oc基础-set和get方法的使用
  • 原文地址:https://www.cnblogs.com/borter/p/9522183.html
Copyright © 2020-2023  润新知