zoukankan      html  css  js  c++  java
  • Hibernate框架搭建实例

    一,Hibernate是一个持久层,是一个专门负责管理数据库连接的框架;

    二,Hibernate的搭建实例;

    1.在Hibernate的官方网站(http://www.hibernate.org)可以找到hibernate项目的相关资源信息。

    2.把下载好的jar包导入到项目的lib文件夹下,我这里只导入必需的几个包;

    3.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>
            <property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
            <property name="connection.url">jdbc:sqlserver://localhost:1433;DatabaseName=StuSys</property>
            <property name="connection.username">sa</property>
            <property name="connection.password">123456</property>
            <!-- 配置hibernate的基本信息  数据库方言 -->
            <property name="dialect">org.hibernate.dialect.SQLServer2008Dialect</property>
            <property name="connection.pool_size">5</property>
             <!-- 执行操作时是否在控制台打印 SQL -->
            <property name="show_sql">true</property>
             <!-- 是否对 SQL 进行格式化 -->
            <property name="format_sql">true</property>
            <!-- 指定自动生成数据表的策略 -->
            <property name="hbm2ddl.auto">update</property>
            <!-- 指定关联的 .hbm.xml 文件 -->
            <mapping resource="Student.hbm.xml"/>
        </session-factory>
    </hibernate-configuration>

    4.然后创建一个student.java的实体类,用来映射数据库数据:

    package entity;
    
    public class Student {
        private int id;
        private String name;
        private String sex;
        private int age;
        private String addres;
        
        public Student(){}
        
        public Student(int id, String name, String sex, int age, String addres) {
            super();
            this.id = id;
            this.name = name;
            this.sex = sex;
            this.age = age;
            this.addres = addres;
        }
        
        
        public Student(String name, String sex, int age, String addres) {
            super();
            this.name = name;
            this.sex = sex;
            this.age = age;
            this.addres = addres;
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String getAddres() {
            return addres;
        }
    
        public void setAddres(String addres) {
            this.addres = addres;
        }
        
    }

     5.然后再创建一个Student.hbm.xml(注意格式是类名.hbm.xml):

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <hibernate-mapping>
        <!-- class代表实体类跟数据库表之间的映射 -->
        <class name="entity.Student" table="student">
            <id name="id" column="ID"><!-- ID的类型要注意对应,否则会出现异常 -->
                <generator class="native"/><!-- class要根据不的数据库填写不同的值 -->
            </id>
            <!--类的每个属性对应表里的每个字段,要注意类型的对应  -->
            <property name="name" column="NAME"/>
            <property name="sex" column="SEX"/>
            <property name="age"  column="AGE"/>
            <property name="addres" column="ADDRES"/>
         </class>
    </hibernate-mapping>

     6.然后再applicationContext.xml文件中加入hibernate.cfg.xml文件:

    <bean id="sessionfactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean" scope="prototype">
         <property name="configLocation" value="/WEB-INF/classes/hibernate.cfg.xml"></property>
    </bean>

    7.在Action类里用sessionfactory实例完成对数据库的连接:

    package dao;
    
    import java.math.BigDecimal;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;
    import org.hibernate.query.Query;
    
    import ssh.entity.BookCard;
    import ssh.util.MyConnection;
    
    public class IndexDaoImpl implements IndexDao {
    
        //在SSH的设计理念:要使用某个实例,那么就定义声明一个对象,然后
        //给它添加set方法(用于spring注入进来),实现不要关注这个实例
        //来自于那里,以及怎么创建,或者它是谁
        private SessionFactory sessionFactory;
        public void setSessionFactory(SessionFactory sf) {
            this.sessionFactory = sf;
        }
    
    
        @Override
        public List<Student> getAllBookCard() {
            //sessionFactory这个实例可以自己按常规的hibernate传统写法创建
            //也可以交给spring去托管
            //sessionFactory = new Configuration().configure().buildSessionFactory();
            Session session = sessionFactory.openSession();
            System.out.println("sessionFactory:"+sessionFactory);
            System.out.println("session:"+session);
            //执行查询之前,先插入2条数据
            Student bc1 = new Student();
            //bc1.setCid(cid);
            bc1.setName("小红");
            bc1.setSex("妖");
            bc1.setCardDate(new java.util.Date());
            bc1.setDeposit(55.8);
            session.save(bc1);
            
    //        //后面当使用JPA的时候,EntityManager 类似于 Session
            Query query = session.createQuery("from Student");
    //        //System.out.println("query:"+query);
    //        //这2行代码,会交给spring的AOP帮忙处理
            List<BookCard> list = query.getResultList();
    
            return list;
        }
    }
  • 相关阅读:
    C#使用GZipStream压缩与解压字符串
    C# 参考之方法参数关键字:params、ref及out
    C#中cookie讲解
    WPF中窗口控件的跨线程调用
    vs2010 快捷键大全
    Python线程池
    Python 爬虫修正
    Python 爬虫插件
    Python发现爬虫插件有BUG。
    Python 存在BUG的线程池
  • 原文地址:https://www.cnblogs.com/huangjinwen/p/5845361.html
Copyright © 2011-2022 走看看