zoukankan      html  css  js  c++  java
  • Hibernate5 Guide

    (1) 创建Maven工程

    可以使用Eclipse或IDEA创建

    (2) 修改pom文件

     1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     2     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     3     <modelVersion>4.0.0</modelVersion>
     4     <groupId>com.hibernate5guide</groupId>
     5     <artifactId>hibernate5guide</artifactId>
     6     <version>0.0.1-SNAPSHOT</version>
     7     <dependencies>
     8         <dependency>
     9             <groupId>org.hibernate</groupId>
    10             <artifactId>hibernate-core</artifactId>
    11             <version>5.2.12.Final</version>
    12         </dependency>
    13         <dependency>
    14             <groupId>mysql</groupId>
    15             <artifactId>mysql-connector-java</artifactId>
    16             <version>5.1.44</version>
    17         </dependency>
    18     </dependencies>
    19     <build>
    20         <pluginManagement>
    21             <plugins>
    22                 <plugin>
    23                     <groupId>org.apache.maven.plugins</groupId>
    24                     <artifactId>maven-compiler-plugin</artifactId>
    25                     <configuration>
    26                         <source>${java-version}</source>
    27                         <target>${java-version}</target>
    28                     </configuration>
    29                 </plugin>
    30             </plugins>
    31         </pluginManagement>
    32     </build>
    33     <properties>
    34         <java-version>1.8</java-version>
    35     </properties>
    36 </project>

    (3) 添加hibernate.cfg.xml文件

     1 <?xml version='1.0' encoding='UTF-8'?>
     2 <!DOCTYPE hibernate-configuration PUBLIC
     3           "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
     4           "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
     5 <hibernate-configuration>
     6     <session-factory>
     7         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
     8         <property name="connection.url">jdbc:mysql://localhost:3306/test</property>
     9         <property name="connection.username">xxx</property>
    10         <property name="connection.password">xxx</property>
    11         <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
    12         <property name="show_sql">true</property>
    13         <property name="hbm2ddl.auto">update</property>
    14         <mapping class="hibernate5guide.entity.TestEvent" />
    15     </session-factory>
    16 </hibernate-configuration>

    (4) 创建SessionFactoryBuilder拿到单例的SessionFactory

     1 package hibernate5guide.util;
     2 
     3 import org.hibernate.SessionFactory;
     4 import org.hibernate.boot.MetadataSources;
     5 import org.hibernate.boot.registry.StandardServiceRegistry;
     6 import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
     7 
     8 /**
     9  * An example to obtain the org.hibernate.SessionFactory.<br>
    10  * One benefit of this approach is JUnit test.<br>
    11  */
    12 public class SessionFactoryBuilder {
    13 
    14     private static SessionFactory instance;
    15 
    16     private SessionFactoryBuilder() {
    17     }
    18 
    19     public static synchronized SessionFactory getInstance() {
    20         return instance == null ? setUpSessionFactory() : instance;
    21     }
    22 
    23     private static SessionFactory setUpSessionFactory() {
    24         // A SessionFactory is set up once for an application!
    25         // configures settings from hibernate.cfg.xml
    26         final StandardServiceRegistry registry = new StandardServiceRegistryBuilder().configure().build();
    27         try {
    28             instance = new MetadataSources(registry).buildMetadata().buildSessionFactory();
    29         } catch (Exception e) {
    30             // The registry would be destroyed by the SessionFactory, but we had
    31             // trouble building the SessionFactory, so destroy it manually.
    32             StandardServiceRegistryBuilder.destroy(registry);
    33         }
    34 
    35         return instance;
    36     }
    37 }

    (5) 创建实体类

     1 package hibernate5guide.entity;
     2 
     3 import java.io.Serializable;
     4 import java.util.Date;
     5 
     6 import javax.persistence.Column;
     7 import javax.persistence.Entity;
     8 import javax.persistence.GeneratedValue;
     9 import javax.persistence.Id;
    10 import javax.persistence.Table;
    11 import javax.persistence.Temporal;
    12 import javax.persistence.TemporalType;
    13 
    14 import org.hibernate.annotations.GenericGenerator;
    15 
    16 @Entity
    17 @Table(name = "test_event")
    18 public class TestEvent implements Serializable {
    19 
    20     private static final long serialVersionUID = 1L;
    21 
    22     @Id
    23     @Column(name = "event_id")
    24     @GeneratedValue(generator = "increment")
    25     @GenericGenerator(name = "increment", strategy = "increment")
    26     private Long eventId;
    27 
    28     @Column(name = "event_title")
    29     private String eventTitle;
    30 
    31     @Column(name = "event_date")
    32     @Temporal(TemporalType.TIMESTAMP)
    33     private Date eventDate;
    34 
    35     // a default constructor for entity must exist
    36     public TestEvent() {
    37     }
    38 
    39     public TestEvent(String eventTitle, Date eventDate) {
    40         this.eventTitle = eventTitle;
    41         this.eventDate = eventDate;
    42     }
    43 
    44     public TestEvent(Long eventId, String eventTitle, Date eventDate) {
    45         this.eventId = eventId;
    46         this.eventTitle = eventTitle;
    47         this.eventDate = eventDate;
    48     }
    49 
    50     public Long getEventId() {
    51         return eventId;
    52     }
    53 
    54     public void setEventId(Long eventId) {
    55         this.eventId = eventId;
    56     }
    57 
    58     public String getEventTitle() {
    59         return eventTitle;
    60     }
    61 
    62     public void setEventTitle(String eventTitle) {
    63         this.eventTitle = eventTitle;
    64     }
    65 
    66     public Date getEventDate() {
    67         return eventDate;
    68     }
    69 
    70     public void setEventDate(Date eventDate) {
    71         this.eventDate = eventDate;
    72     }
    73 
    74     @Override
    75     public String toString() {
    76         return "TestEvent [eventId=" + eventId + ", eventTitle=" + eventTitle + ", eventDate=" + eventDate + "]";
    77     }
    78 }

    (6) 添加和查询测试

    INSERT

    1 Session session = getSessionFactory().openSession();
    2 session.beginTransaction();
    3 session.save(new TestEvent("first event!", new Date()));
    4 session.save(new TestEvent("Second event!", new Date()));
    5 session.getTransaction().commit();
    6 session.close();

    SELECT

    1 Session session = getSessionFactory().openSession();
    2 session.beginTransaction();
    3 List<TestEvent> result = session.createQuery("from TestEvent").list();
    4 session.getTransaction().commit();
    5 session.close();
  • 相关阅读:
    python mysql and ORM
    mysql-8.0.12-winx64 解压版安装(转)
    mysql装完计算机管理里面没mysql服务怎么解决(转)
    Python使用MySQL数据库(新)(转)
    Python之路,Day9
    python随笔2(列表的增删改查)
    python随笔1
    2018-05-23——PYTHON第三天
    2018-05-22——PYTHON第二天
    2018-05-21——python第一天
  • 原文地址:https://www.cnblogs.com/storml/p/7843570.html
Copyright © 2011-2022 走看看