zoukankan      html  css  js  c++  java
  • hibernate学习-HibernateDemo

    上篇文章我们讲述了eclipse安装hibernate插件的过程,这篇文章我们来做第一个HibernateDemo。

    1)、hibernate的jar开发包的下载,官网下载地址:http://hibernate.org/orm/downloads/,解压后我们可以在hibernate-release-5.2.3.Finallib equired文件夹下找到hibernate开发用到的jar包。

    2)、新建一个Java Project项目,导入jar包(记得把MySQL的jar包也加进去),在src根目录下新建一个***.cfg.xml文件(安装插件成功后可以快速新建),然后我们进行文件配置,代码如下:

    <session-factory>
        <!-- 连接数据库的基本信息 -->
            <property name="connection.username">root</property><!-- MySQL数据库的用户名 -->
            <property name="connection.password">root</property><!-- MySQL数据库的密码 -->
            <property name="connection.driver_class">com.mysql.jdbc.Driver</property><!-- MySQL驱动 -->
            <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property><!--MySQL的URL,localhost(本地地址,可以省略)也可以改成远程服务器地址 -->
            
            <!-- 配置hibernate的基本信息 -->  
            <!-- hibernate所使用的基本方言 -->
            <property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
            
            <!-- 执行操作时是否在控制台打印 -->
            <property name="show_sql">true</property>
            
            <!-- 是否对sql格式化 -->
            <property name="format_sql">true</property>
            
            <!-- 指定自动生成数据表的策略 -->
            <property name="hbm2ddl.auto">update</property>
            <!-- 指定关联的.hbm.xml文件,这一步应该生成java beans后再配置 -->
            <mapping resource="com/hibernateHello/News.hbm.xml"/>
    
        </session-factory>

    3)、定义JavaBeans(对应你的数据表),

    package com.hibernateHello;
    
    import java.sql.Date;
    
    public class News {
        private Integer id;
        private String author;
        private String title;
        private Date date;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getAuthor() {
            return author;
        }
    
        public void setAuthor(String author) {
            this.author = author;
        }
    
        public String getTitle() {
            return title;
        }
    
        public void setTitle(String title) {
            this.title = title;
        }
    
        public Date getDate() {
            return date;
        }
    
        public void setDate(Date date) {
            this.date = date;
        }
    
        public News() {
            // TODO Auto-generated constructor stub
        }
    
        public News(String author, String title, Date date) {
            // super();
            this.author = author;
            this.title = title;
            this.date = date;
        }
    
    }

    4)、快捷生成JavaBeans对应的News.hbm.xml文件(也是插件提供),具体操作如下图所示。

    生成的代码:

    <hibernate-mapping>
        <class name="com.hibernateHello.News" table="NEWS">
            <!-- id 主键 -->
            <id name="id" type="java.lang.Integer">
                <column name="ID" />
                <!-- 指定主键生成方式 native:使用数据库本地方式 -->
                <generator class="native" />
            </id>
            <property name="author" type="java.lang.String">
                <column name="AUTHOR" />
            </property>
            <property name="title" type="java.lang.String">
                <column name="TITLE" />
            </property>
            <property name="date" type="java.sql.Date">
                <column name="DATE" />
            </property>
        </class>
    </hibernate-mapping>

    5)、 ***.cfg.xml指定关联的**.hbm.xml文件(*千万不要忘记)

    6)、通过JUnit测试,代码如下:

    package com.hibernateHello;
    
    import java.sql.Date;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.boot.registry.StandardServiceRegistry;
    import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
    import org.hibernate.cfg.Configuration;
    import org.junit.After;
    import org.junit.Before;
    
    public class Test {
        private Configuration configuration;
        private StandardServiceRegistry registry;
        private SessionFactory sessionFactory;
        private Session session;
        private Transaction transaction;
    
        @Before
        public void first() {
            // 创建Configuration对象:对应hibernate的基本配置信息和对象关系映射信息
            configuration = new Configuration().configure();
    
            //创建一个对象StandardServiceRegistry,configure("你的***.cfg.xml"),默认为hibernate.cfg.xml
            registry = new StandardServiceRegistryBuilder().configure().build();
            
            //  创建会话工厂对象
            sessionFactory = configuration.buildSessionFactory(registry);
    
            // 创建一个Session对象
            session = sessionFactory.openSession();
    
            // 开启事物
            transaction = session.beginTransaction();
        }

    /*

    * saveNews()添加数据

    * getNews()和loadNews()查找数据
    * updateNews()修改数据
    * deleteNews()删除数据

    */

        @org.junit.Test

    public void saveNews() {
            News news = new News("63va", "fe", new Date( new java.util.Date().getTime()));
            session.save(news);
        }
      
        @org.junit.Test
        public void getNews() {
            News a1 = session.get(News.class, 1);
            System.out.println(a1);
    
        }
    
        @org.junit.Test
        public void loadNews() {
            News a1 = session.load(News.class, 1);
            System.out.println(a1);
    
        }
    
        @org.junit.Test
        public void updateNews() {
            News a1 = session.get(News.class, 2);
            a1.setAuthor("ccc");
            session.update(a1);
            System.out.println(a1);
    
        }
    
        @org.junit.Test
        public void deleteNews() {
            News a1 = session.get(News.class, 4);
            session.delete(a1);
            // System.out.println(a1);
    
        }
    
        @After
        public void finsh() {
            // 提交事物
            transaction.commit();
            //关闭session
            session.close();
            //  关闭SessionFactory对象
            sessionFactory.close();
        }
    
    }

    7)、运行效果如图所示:

    作者:starryfeiii
    出处:http://www.cnblogs.com/feiii/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,原文链接否则保留追究法律责任的权利。
  • 相关阅读:
    php 为什么new一个对象后面要加一个反斜杠
    c# 判断当前时间是否在某一时间段内
    关于Entity Framework的概念及搭建
    mvc 读写txt文档
    winform :DataGridView添加一列checkbox
    使用filter进行登录验证,并解决多次重定向问题
    关于Select选中问题
    错误:Parameter '0' not found.Available parameters are [arg1, arg0, param1, param2]的解决方法
    sql-省市区
    设置oracle主键自增长
  • 原文地址:https://www.cnblogs.com/feiii/p/6095738.html
Copyright © 2011-2022 走看看