这两天在慕课看完了关于Hibernate的一个入门视频,里面简单介绍了hibernate的一些知识点,光是看视频的时候总感觉好像不是很难的样子,可是今天实际写代码的时候却发现自己一直报错~也是心累.
编写Hibernate例子的步骤
创建hibernate的配置文件(*.cfg.xml)
这里主要配置和数据库连接的一些基本信息。常用的如下:
<session-factory> <property name="connection.url">jdbc:mysql://localhost:3306/jianqlims</property> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> /* 配置hibernate数据库方言,hibernate可针对特殊的数据库进行优化 */ <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> <property name="connection.username">root</property> <property name="connection.password">root</property> /* 是否把hibernate运行时的SQL语句输出到控制台,编码阶段便于测试 */ <property name="show_sql">true</property> /* 输出到控制台的SQL语句是否进行排版,便于阅读。建议设置为true */ <property name="format_sql">true</property> <!-- DB schema will be updated if needed --> /* 可以帮助由java代码生成数据库脚本,进而生成具体的表结构。 create | update | create-drop | vaildate create 既每次都会生成一张新表 update 既在原来的表格基础上进行更新 */ <property name="hbm2ddl.auto">update</property> <mapping resource="domain/SchoolCourse.hbm.xml"/> </session-factory>
创建持久类
个人理解:既相当于生成一个domain对象,从而生成下述的映射文件。
创建对象-关系映射文件(*.hbm.xml)
通过hibernate API编写访问数据库的代码
下面是一个简单的test文件,一开始按照视频时,采用了Junit单元测试的方式,但是一直都不能运行成功(空指针错误),而且找了一晚上也不知道如何修改,后来只能改成下述代码。在运行的时候,有报过关于jdbc的错误,但是因为没有检查配置文件,白白浪费了N个小时,所以当错误提醒有关jdbc时,要好好检查配置文件是否正确。
package Test; import domain.SchoolCourse; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; import java.sql.Date; import java.sql.Timestamp; public class SchoolCourseTest { private SessionFactory seesionFactory; private Session session; private Transaction transaction; public static void main(String[] args) { SessionFactory seesionFactory; Session session; Transaction transaction; Configuration cfg; ServiceRegistry serviceRegistry; Timestamp time = new Timestamp(System.currentTimeMillis()); SchoolCourse sc = new SchoolCourse(5,"算法分析",2,1,time,"cxz","none"); // sc.setId(4); // sc.setCourseName("JAVA"); // sc.setSchoolTerm(1); // sc.setStatus(2); // sc.setCreatedDate(time); // sc.setCreater("cxz"); // sc.setMemo("none"); cfg = new Configuration().configure(); serviceRegistry = new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry(); seesionFactory = cfg.buildSessionFactory(serviceRegistry); session = seesionFactory.openSession(); transaction = session.beginTransaction(); session.save(sc); transaction.commit(); } }
最后附上一张hibernate的执行流程(来自慕课的hibernate入门教程)
最近一个月都没有更新了,虽然知道很多知识点不总结就会忘记,可是每次一总结都会浪费大量时间,而且感觉也不一定自己真正意会了其中的知识,但是最近的实习让我感受到自身很大的不足(不管是基础还是知识的眼界),甚至会考虑自己以后是不是真的往技术发展这个问题。
不过,目前来说,还是想一步步再走下去,如果真的接受不了那就再说吧,路总是很多的,找到适合自己的才是最好的路。