美文网首页
IDEA中利用Hibernate连接SQL Server

IDEA中利用Hibernate连接SQL Server

作者: jacob_ | 来源:发表于2019-04-30 13:16 被阅读0次

    1 引言

    • 本教程介绍了从建立项目到连接至数据库的全部过程以及在其中我自己遇到的问题。

    2 建立项目

    1. 选择Java Enterprise
    2. 勾选Web Application
    3. 勾选hibernate
    4. 下载hibernate
    5. 取项目名称,完成建立项目
    建立项目
    建立项目
    下载Hibernate

    3 添加驱动包

    • 项目建立成功后如下:


      lib
    • 此时还需要添加SQL Server的驱动包
      下载驱动包
    • 下载完成后复制进lib包下再添加成库即可

    4 编写Hibernate配置文件模板

    编写模板

    hibernate.cfg.xml模板代码如下:

    <?xml version='1.0' encoding='utf-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
            "-//Hibernate/Hibernate Configuration DTD//EN"
            "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
        <session-factory>
            <!--数据库名称-->
            <property name="connection.username">root</property>
            <!--数据库密码-->
            <property name="connection.password"></property>
            <!--数据库驱动-->
            <property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
            <!--localhost:1433,表示本机1433端口,hibernate表示数据库名称-->
            <property name="connection.url">jdbc:sqlserver://localhost:1433;DatabaseName=hibernate</property>
            <!--方言-->
            <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
    
            <property name="show_sql">true</property>
            <property name="format_sql">true</property>
    <!--采用create会每次都创建新表,用update是更新-->
            <property name="hbm2ddl.auto">update</property>
            <!--实体映射-->
            <mapping resource="Students.hbm.xml"/>
            <!-- DB schema will be updated if needed -->
            <!-- <property name="hbm2ddl.auto">update</property> -->
        </session-factory>
    </hibernate-configuration>
    

    实体模板代码如下:

    <?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>
        <!--name:表示映射的是哪个类,table表示该类映射数据库的那张表-->
        <class name="Students" table="students">
            <!--id,表示表的主键,name表示实体中的属性,type表示其数据类型,column name则是表中的名称-->
            <id name="sid" type="int">
                <column name="sid"/>
                <!--主键生成策略native为数据库自动增长,assigned为自己分配-->
                <generator class="native"/>
            </id>
            <property name="sname" type="java.lang.String">
                <column name="sname"/>
            </property>
            <property name="gender" type="java.lang.String">
                <column name="gender"/>
            </property>
            <property name="birthday" type="java.util.Date">
                <column name="birthday"/>
            </property>
            <property name="address" type="java.lang.String">
                <column name="address"/>
            </property>
        </class>
    </hibernate-mapping>
    

    5 编写配置文件与实体文件

    配置文件与实体文件
    • 代码如下:
    <?xml version='1.0' encoding='utf-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
            "-//Hibernate/Hibernate Configuration DTD//EN"
            "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
        <session-factory>
            <property name="connection.username">sa</property>
            <property name="connection.password">659996520..</property>
            <property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
            <property name="connection.url">jdbc:sqlserver://localhost:1433;DatabaseName=hibernate</property>
            <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
    
            <property name="show_sql">true</property>
            <property name="format_sql">true</property>
            <property name="hbm2ddl.auto">create</property>
    
            <mapping resource="Students.hbm.xml"/>
            <!-- DB schema will be updated if needed -->
            <!-- <property name="hbm2ddl.auto">update</property> -->
        </session-factory>
    </hibernate-configuration>
    
    <?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 name="Students" table="students">
            <id name="sid" type="int">
                <column name="sid"/>
                <generator class="assigned"/>
            </id>
            <property name="sname" type="java.lang.String">
                <column name="sname"/>
            </property>
            <property name="gender" type="java.lang.String">
                <column name="gender"/>
            </property>
            <property name="birthday" type="java.util.Date">
                <column name="birthday"/>
            </property>
            <property name="address" type="java.lang.String">
                <column name="address"/>
            </property>
        </class>
    </hibernate-mapping>
    
    
    import java.util.Date;
    
    /**
     * Created by DreamBoy on 2016/5/15.
     */
    //学生类
    public class Students {
        //1. 必须为公有的类
        //2. 必须提供公有的不带参数的默认的构造方法
        //3. 属性私有
        //4. 属性setter/getter封装
    
        private int sid; //学号
        private String sname; //姓名
        private String gender; //性别
        private Date birthday; //出生日期
        private String address; //地址
    
        public Students() {
        }
    
        public Students(int sid, String sname, String gender, Date birthday, String address) {
            this.sid = sid;
            this.sname = sname;
            this.gender = gender;
            this.birthday = birthday;
            this.address = address;
        }
    
        public int getSid() {
            return sid;
        }
    
        public void setSid(int sid) {
            this.sid = sid;
        }
    
        public String getSname() {
            return sname;
        }
    
        public void setSname(String sname) {
            this.sname = sname;
        }
    
        public String getGender() {
            return gender;
        }
    
        public void setGender(String gender) {
            this.gender = gender;
        }
    
        public Date getBirthday() {
            return birthday;
        }
    
        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    
        @Override
        public String toString() {
            return "Students{" +
                    "sid=" + sid +
                    ", sname='" + sname + '\'' +
                    ", gender='" + gender + '\'' +
                    ", birthday=" + birthday +
                    ", address='" + address + '\'' +
                    '}';
        }
    }
    

    6 sql server 数据库配置

    • 打开ssms
    • 右键sql server属性
    允许被连接
    配置协议
    • 查看TCP/IP是否已启动


      TCP/IP是否启动
    • 查看端口(一般默认为1433)


      端口
    • 防火墙设置


      设置入站规则
      允许端口
    • 最后千万别忘记重启服务!


      重启服务
    • 登录数据库


      登录
    1. 注意,登录名和密码和之前配置文件的name 和 password一致。
    2. 如何设置登录名和密码?右键属性可以更改密码
      用户名与密码

    7 测试连接

    • 利用单元测试的方式
      下载单元测试jar包
    • 添加包


      添加包
    • 添加测试包,并设置其为源


      test
    • 测试代码如下:
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.boot.MetadataSources;
    import org.hibernate.boot.registry.StandardServiceRegistry;
    import org.hibernate.cfg.Configuration;
    import org.hibernate.service.ServiceRegistry;
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
    import java.util.Date;
    
    /**
     * Created by DreamBoy on 2016/5/15.
     */
    //测试类
    public class StudentsTest {
        private SessionFactory sessionFactory;
        private Session session;
        private Transaction transaction;
    
        @Before
        public void init() {
            //创建配置对象
            Configuration config = new Configuration().configure();
            //创建服务注册对象
            StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
                    .configure().build();
            //创建会话工厂对象
            sessionFactory = new MetadataSources( serviceRegistry ).buildMetadata().buildSessionFactory();
            //会话对象
            session = sessionFactory.openSession();
            //开启事务
            transaction = session.beginTransaction();
        }
    
        @After
        public void destory() {
            transaction.commit(); //提交事务
            session.close(); //关闭会话
            sessionFactory.close(); //关闭会话工厂
        }
    
        @Test
        public void testSaveStudents() {
            //生成学生对象
            Students s = new Students(1, "张三丰", "男", new Date(), "武当山");
            session.save(s); //保存对象进入数据库
        }
    }
    
    • 运行,得出结果


      运行成功
    • 此时,在数据库中可以看到表students已经被创建并且赋值了一行。


      最终结果

    至此我们利用IDEA进行Hibernate与Sql server的连接就成功了!

    相关文章

      网友评论

          本文标题:IDEA中利用Hibernate连接SQL Server

          本文链接:https://www.haomeiwen.com/subject/cyimnqtx.html