Hibernate环境配置

这段时间学点Hibernate 由于前面配置环境是按模板来配置的 所以担心不看模板会不会就忘了 所以特来写一篇温习一下。
Hibernate属于第三方的开发框架,所以
第一步导入库包:官网下载Hibernate库包 ,然后解压打开文件(这里我用的本地的老版本)夹,在lib文件夹下有四个文件夹 分别是required(开发必须的包)、optional(可选择导入的包)、jpa(必须导入的)、bytecode。
第二步新建自己的工程:工程hibernate、包名net.csdn.www、包下面建一个类person(这里要求有一个无参数的构造函数系统默认有,如果只写一个有参数的构造函数则覆盖无参 不可行):

public class Person {
private Integer id;
private String name;
private Integer age;
.........省略setter和getter方法

}

第三步导包:在Hibernate工程下建一个lib文件夹开始导包:首先在文件下有一个hibernate3.jar(后面数字代表版本,不同版本数字不一样)复制到工程lib下,在第一步中的lib下的required(中文含义必须要使用的包)文件加下六个jar包全部粘贴到工程的lib文件夹下,还有jpa文件夹下仅有的一个包(不导入会报找不到类的的错误)也复制到工程lib文件夹下,其中optional文件夹内的包是可选择的 比如如果用到数据库连接池测需要导入相应的包。最后还有就是数据库的驱动 这里使用MySQL连接。然后把所有的包(目前共九个)全部右键build path->add to build path。
结果如下图:
这里写图片描述
第四步:配置hibernate配置文件和类的映射文件
hibernate配置文件:在根目录src下创建文件hibernate.cfg.xml,模板参考hibernate-distribution-3.6.0.Final\project\etc\hibernate.cfg.xml和hibernate.properties。

   <hibernate-configuration>
    <session-factory name="foo">
        <!-- 方言:选用不同的数据库用不同的方言 这里要指出选用的那种数据库-->
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <!-- 数据库连接字符串:对应数据库连接的字符串 最后数据库名t_person提前建立好-->
        <property name="connection.url">jdbc:mysql://localhost:3306/t_person</property>
        <!-- 对应数据库连接驱动-->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <!-- 登录账号和密码-->
        <property name="connection.username">root</property>
        <property name="connection.password">root</property>
        <!-- 设置数据库自动创建  每次运行不一样就更新设计表-->
        <property name="hbm2ddl.auto">update</property>
        <!-- 程序运行时自动在控制台输出sql语句-->
        <property name="show_sql">true</property>       
    </session-factory>
</hibernate-configuration>

设置实体类映射数据库表的文件Person.hbm.xml :
在包名net.csdn.www下创建文件Person.hbm.xml,内容如下:

<hibernate-mapping package="net.csdn.www">
    <!-- 本行class中name是指工程中的实体类名 table指Person类对应数据库表名-->
    <class name="Person" table="t_person">
        <!-- 设置数据库表t_person的主键 标准应该是<id name="id" type="Integer" column="personId">
        name对应实体类主键的名称 type为其在类中设置的类型 column为在数据表中要显示的主键对应列的名称可自己定义,
        由于工程中已经有数据类型且不明确指定则hibernate默认和实体列中名称一样即:id-->
        <id name="id" >
            <generator class="native"></generator>
        </id>
        <!-- 实体类的其他属性对应数据表中的映射设置-->
        <property name="name" type="string" column="name"></property>
        <property name="age" type="integer" column="age"></property>

    </class>
</hibernate-mapping>

第四步测试函数:
这里不用junit测试 直接在Person类中创建main函数如下:

public static void main(String[] args) {
 SessionFactory sessionFactory=new Configuration()
            .configure()
            .addClass(Person.class)
            .buildSessionFactory();
    Session session= sessionFactory.openSession();
    //在Person.hbm.xml主键配置有<generator class="native"></generator>自动增长 插入时不用设置id
    Person person=new Person();
    person.setName("张三");
    person.setAge(23);
    session.save(person);

}

运行后查看数据库数据表已经建立好但是没有数据但控制台报错:
Failed to load class “org.slf4j.impl.StaticLoggerBinder”
…….
查了一些资料 说是要调用日志库 而在jar包中有一个slf4j-api-1.6.1.jar文件由只是日志接口并没有实现 所以可以找一个实现接口的包比如slf4j-nop-1.7.24.jar 复制到lib并build path运行结果ok。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值