对于Hibernate的相关配置:
1.先把jar包导入到classpath下,再增加相应数据库的jar包,(mysql或者oracle的)
2.在src下新建hibernate.cfg.xml文件,这个是hibernate的核心的配置文件。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory><!-- 配置数据源的地方 -->
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="connection.url">oracle:jdbc:thin:@localhost:1521:orcl(自己数据库的名字)</property>
<property name="connection.username">scott</property>
<property name="connection.password">tiger</property>
</session-factory>
</hibernate-configuration>
3.对数据库的表进行映射:
(1)创建实体类。
(2)利用xml文件说明数据库中表相关参数和实体类的对应关系。(我这里用的是oracle数据库)
<hibernate-mapping>
<!-- 说明Emp实体类对应于scott.emp表 -->
<class name="com.example.hibernate.entity.Emp" table="emp" catalog="scott">
<!-- id代表主键是哪个列,对应于哪个属性 name代表属性名,column对应于字段名
这句话说明emp表的主键为empno 且对应于 Emp类的eno属性
-->
<id name="eno" column="empno">
<!-- 主键生成策略, increment代表在新增数据的时候主键最大值+1作为新纪录的编号 -->
<generator class="incrment"></generator>
</id>
<!-- 除了主键 其他字段均使用property标签进行映射 -->
<property name="ename" column="ename"></property>
<property name="job" column="job"></property>
<property name="mgr" column="mgr"></property>
<property name="hiredate" column="hiredate"></property>
<property name="salary" column="sal"></property>
<property name="comm" column="comm"></property>
<property name="deptno" column="deptno"></property>
</class>
</hibernate-mapping>
(3)在hibernate.cfg.xml文件中进行注册。
<mapping resource="com/example/hibernate/entity/emp.hbm.xml"/> (这里只是我个人的映射文件,具体情况依据 自己的而定)。
4.利用Hibernate 完成数据的CRUD(增删改查)操作。
(1)加载hibernate.cfg.xml配置文件
Configuration conf = new Configuration().configure();
(2)创建SessionFactory, SessionFacory相当于创建数据库操作对象(Session)的工厂
SessionFactory sf = conf.buildSessionFactory();
(3)利用SessionFactory(会话工厂)创建Session(会话)对象.
Session session = sf.openSession();
(4)进行数据的crud(增删改查)。
这里需要注意的是:
将sql语句转为hql语句,只需要遵循以下三点基本:
1.大多数情况下,不用使用select * ;
2.hql中出现的表名对应于实体类名,并且区分大小写。
3.出现的字段名对应于实体类中的属性名。
(5)关闭结果。