zoukankan      html  css  js  c++  java
  • Hibernate从入门到上手(纯java project、Maven版本hibernate)

    Hibernate(orm框架)(开放源代码的对象关系映射框架)
    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
    Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。

    Orm:Object relational mapping,对象映射关系,用于对象与关系型数据库关联映射框架。

    Demo1:纯java project

    搭建步骤:

      第一步:创建数据库表t_user,创建java对象USer.java

      第二步:添加jar包

      第三步:创建映射文件

      第四步:创建hibernate核心配置文件hibernate.cfg.xml

      第五步:测试

    以下是详细步骤演示:

    项目结构

       第一步:创建数据库表t_user,创建java对象USer.java

    #数据库表t_user
    CREATE DATABASE hibernate_demo CHARSET 'UTF8'; CREATE TABLE t_use( id INT(10) PRIMARY KEY AUTO_INCREMENT, uname VARCHAR(20) NOT NULL );
    //创建java对象User.java
    public class User { private Integer id; private String uname; //getter和setter省略 ...... }

      第二步:添加jar包

      第三步:创建映射文件user.hbm.xml

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
            <!--package:java对象包路径 -->
    <hibernate-mapping package="com.jonychen.model">
        <!-- 配置对象与table的关系 -->
        <class name="User" table="t_user">
            <!-- 指定主键name:表示java对象属性名 column -->
            <id name="id" column="id" type="integer">
            <!--配置主键自增策略  -->
                <generator class="native" />
            </id>
            <!--配置其他属性与字段关联关系  -->
            <property name="uname" column="uname" type="string" />
        </class>
    </hibernate-mapping>

      第四步:hibernate.cfg.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC
            "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
        <session-factory>
        <!--1、方言:指定数据库类型 -->
            <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
            <!--2、配置数据源 -->
            <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="connection.url">jdbc:mysql://localhost:3306/hibernate_demo</property>
            <property name="connection.username">root</property>
            <property name="connection.password">mysql</property>
            <!--打印sql -->
            <property name="show_sql">true</property>
            <!--3、加载映射文件 -->
            <mapping resource="com/jonychen/model/user.hbm.xml" />
        </session-factory>
    </hibernate-configuration>

    第五步,测试

     1 package com.jonychen.test;
     2 
     3 import org.hibernate.Session;
     4 import org.hibernate.SessionFactory;
     5 import org.hibernate.Transaction;
     6 import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
     7 import org.hibernate.cfg.Configuration;
     8 import org.hibernate.service.ServiceRegistry;
     9 
    10 import com.jonychen.model.User;
    11 
    12 public class HibernateTest {
    13 
    14     public static void main(String[] args) {
    15         // TODO Auto-generated method stub
    16         //1、加载配置文件
    17         Configuration cfg=new Configuration();
    18         cfg.configure("hibernate.cfg.xml");
    19 
    20 
    21         //2、创建sessionFactory 
    22         ServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build();
    23         SessionFactory sessionFactory=cfg.buildSessionFactory(serviceRegistry);
    24 
    25         //3、打开全新session
    26         Session session=sessionFactory.openSession();
    27         
    28         try {
    29             //事务
    30             Transaction ts=session.beginTransaction();
    31             
    32             User user =new User();
    33             user.setUname("jonychen");
    34             //添加数据
    35             session.save(user);
    36             //提交事务
    37             ts.commit();
    38         } catch (Exception e) {
    39             // TODO Auto-generated catch block
    40             e.printStackTrace();
    41         }finally {
    42             //关闭连接
    43             if(session!=null) {
    44                 session.close();
    45             }
    46             if(sessionFactory!=null) {
    47                 sessionFactory.close();
    48             }
    49             
    50         }
    51     }
    52 }

    在Eclipse里添加插件开发Hibernate

     

    Demo2 :Maven版本hibernate

    项目结构:

    maven项目中除了以上两个文件有变化,其他跟之前搭建的java project一样,以下是有变化的两段代码。

    pom.xml

     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.jonychen</groupId>
     5     <artifactId>hibernate-demo-maven</artifactId>
     6     <version>0.0.1-SNAPSHOT</version>
     7     <dependencies>
     8         <!--hibernate -->
     9         <dependency>
    10             <groupId>org.hibernate</groupId>
    11             <artifactId>hibernate-core</artifactId>
    12             <version>4.3.11.Final</version>
    13         </dependency>
    14         <!--MySQL数据库 -->
    15         <dependency>
    16             <groupId>mysql</groupId>
    17             <artifactId>mysql-connector-java</artifactId>
    18             <version>5.1.44</version>
    19         </dependency>
    20         <!--junit单元测试 -->
    21         <dependency>
    22             <groupId>junit</groupId>
    23             <artifactId>junit</artifactId>
    24             <version>4.12</version>
    25         </dependency>
    26     </dependencies>
    27     <build>
    28         <plugins>
    29             <!-- 指定jdk版本 -->
    30             <plugin>
    31                 <groupId>org.apache.maven.plugins</groupId>
    32                 <artifactId>maven-compiler-plugin</artifactId>
    33                 <version>3.7.0</version>
    34                 <configuration>
    35                     <source>1.8</source>
    36                     <target>1.8</target>
    37                 </configuration>
    38             </plugin>
    39         </plugins>
    40     </build>
    41 </project>

    HibernateTest.java

     1 package com.jonychen.test;
     2 
     3 import org.hibernate.Session;
     4 import org.hibernate.SessionFactory;
     5 import org.hibernate.Transaction;
     6 import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
     7 import org.hibernate.cfg.Configuration;
     8 import org.hibernate.service.ServiceRegistry;
     9 import org.junit.After;
    10 import org.junit.Before;
    11 import org.junit.Test;
    12 
    13 import com.jonychen.model.User;
    14 
    15 
    16 public class HibernateTest {
    17 
    18     SessionFactory sessionFactory=null;
    19     Session session=null;
    20 
    21     @Before
    22     public void init() {
    23         //1、加载配置文件
    24         Configuration cfg=new Configuration();
    25         cfg.configure("hibernate.cfg.xml");
    26 
    27 
    28         //2、创建sessionFactory 
    29         ServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build();
    30         SessionFactory sessionFactory=cfg.buildSessionFactory(serviceRegistry);
    31 
    32         //3、打开全新session
    33          session=sessionFactory.openSession();
    34     }
    35 
    36     @Test
    37     public  void testSave() {
    38         //事务
    39         Transaction ts=session.beginTransaction();
    40 
    41         User user =new User();
    42         user.setUname("jony.k.chen");
    43         //添加数据
    44         session.save(user);
    45         //提交事务
    46         ts.commit();
    47     }
    48     @After
    49     public void  destory() {
    50         //关闭连接
    51         if(session!=null) {
    52             session.close();
    53         }
    54         if(sessionFactory!=null) {
    55             sessionFactory.close();
    56         }
    57     }
    58 }

    友情提醒:

    测试的时候如果报错org.hibernate.MappingException: Unknown entity,说明是版本问题,在pom.xml中调整版本号即可,亲测有效!

  • 相关阅读:
    element-ui upload 上传图片之前压缩
    字符串截取substring放法传参不同返回不同
    vue中对于图片是否正常加载的思考
    前端图片合成并下载
    vue中图相对路径引用本地图片
    js计算精度
    vue-cli定义全局过滤器
    js加减乘除运算丢失精度 前端计算金额带小数点精度丢失问题
    鼠标样式大全
    js两小时倒计时,剩余时间倒计时,倒计时
  • 原文地址:https://www.cnblogs.com/lxcy/p/8405123.html
Copyright © 2011-2022 走看看