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