使用maven和myeclipse配置hibernate以及基本的入门程序
hibernate是使用pojo类和数据库表映射的方式,因此hibernate的创建和配置需要有:
1.导包
2.创建hibernate.cfg.xml核心配置文件
3.创建与数据库表所对应的pojo类
4.创建和配置让数据库表和pojo类能映射起来的映射文件Goods.hbm.xml文件
5.测试
1.首先创建一个项目后,在pom.xml文件中导入hibernate所需要的依赖
<dependencies> <!-- hibernate的核心依赖包 --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.3.6.Final</version> </dependency> <!-- jdbc的包 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.32</version> </dependency> <!-- 查看日志文件的log4j包 --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.12</version> </dependency> <!-- 测试用的依赖包 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> </dependency> </dependencies>
maven会自动将hibernate其他所需要的依赖包自动导入,最后可以在文件目录下查看
2.创建一个hibernate.cfg.xml文件,注意这个名称不可变
在其中配置连接数据库所需要的信息:驱动路径,url,数据库的账号,密码
注意这个文件如果使用maven的话只能创建在src/main/resources下,不要有多层目录。
如果没有使用maven,将其创建在src目录下即可
<?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="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <!-- url --> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property> <!-- 用户名 --> <property name="hibernate.connection.username">root</property> <!-- 密码 --> <property name="hibernate.connection.password">root</property> <!-- 方言 --> <!-- 告诉框架使用了什么数据库 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 可以将向数据库发送的SQL语句显示出来 --> <property name="hibernate.show_sql">true</property> <!-- 格式化SQL语句 --> <property name="hibernate.format_sql">true</property> <!-- 加载映射文件 --> <!-- 在第三步配置pojo类和数据库表的映射文件 --> <mapping resource="Goods.hbm.xml" /> </session-factory> </hibernate-configuration>
3.创建pojo类
一定要给其,get和set方法,因为hibernate是使用get和set方法来进行数据库的增删查改的
private int id; private String goodsName; private double goodsPrice; private String goodsType; private int goodsNumber; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getGoodsName() { return goodsName; } public void setGoodsName(String goodsName) { this.goodsName = goodsName; } public double getGoodsPrice() { return goodsPrice; } public void setGoodsPrice(double goodsPrice) { this.goodsPrice = goodsPrice; } public String getGoodsType() { return goodsType; } public void setGoodsType(String goodsType) { this.goodsType = goodsType; } public int getGoodsNumber() { return goodsNumber; } public void setGoodsNumber(int goodsNumber) { this.goodsNumber = goodsNumber; } @Override public String toString() { return "Goods [id=" + id + ", goodsName=" + goodsName + ", goodsPrice=" + goodsPrice + ", goodsType=" + goodsType + ", goodsNumber=" + goodsNumber + "]"; }
4.创建和配置pojo类和数据库表的映射文件Goods.hbm.xml
这个文件名可以随便,但后缀以xxx.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> <!-- name:实体路径 table:实体对应的表名 --> <class name="com.oracle.pojo.Goods" table="goods"> <!-- column:数据库表的列 name:实体类中对应的名称 --> <!-- id标签只配主键,其余的列用property配置 --> <id name="id" column="id" > <!-- 主键的生成策略 --> <!-- 自增长,序列化等等 --> <!--native可以由hibernate自动判断使用的主键生成策略--> <generator class="native"></generator> </id> <property name="goodsName" column="goodsName"></property> <property name="goodsPrice" column="goodsPrice"></property> <property name="goodsType" column="goodsType"></property> <property name="goodsNumber" column="goodsNumber"></property> </class> </hibernate-mapping>
5.测试是否配置成功
我们在第一步已经导入了测试所需要的包,直接使用即可
private Session session = null; private Transaction transaction = null; @Before public void Util() { // 加载配置文件 Configuration configuration = new Configuration().configure(); // 获取session工厂对象 SessionFactory sessionFactory = configuration.buildSessionFactory(); // 从工厂获取session对象 session = sessionFactory.openSession(); // 开启事务 transaction = session.beginTransaction(); } @org.junit.Test public void testName() throws Exception { //根据主键传入参数查询 Goods goods = session.get(Goods.class, 1); System.out.println(goods); //提交事务 transaction.commit(); //关闭连接 session.close(); }
结果如下: