读书人

Hibernat马战士第01课HelloWorld

发布时间: 2012-10-07 17:28:51 作者: rapoo

Hibernat马士兵—第01课,HelloWorld

刚刚看了马士兵讲解的Hibernate的视频教程,现在吧学习笔记整理出来。

问题描述:

?

做一个HelloWorld的Demo程序

问题求解:

一、创建数据库和表

Create Database? hibernate;
Create Table sutdent(id int primary key, name varchar(20), age int);

二、写与之相关的Model类

package com.liberD.hibernate.model;

public class Student {
??? private int id;
??? private String name;
??? private int age;

??? public int getId() {
??????? return id;
??? }

??? public void setId(int id) {
??????? this.id = id;
??? }

??? public String getName() {
??????? return name;
??? }

??? public void setName(String name) {
??????? this.name = name;
??? }

??? public int getAge() {
??????? return age;
??? }

??? public void setAge(int age) {
??????? this.age = age;
??? }

}

三、添加相应的Hibernate的Jar包和数据库驱动Jar包


注:把hibernate3.jar和lib下的required中的包全部加入。数据库驱动视数据库而定。
MyEclipse中添加Jar的方法:

MyEclipse添加JAR包的新方法:Windows—>Preferences—>Java—>Build Path—>User Libraries—>New,创建一个新的JAR包集合。然后添加相应的JAR包。

选中需要添加JAR包的项目,右击,选Build Path—>Add Libraries—>User Libraries再选合适的OK了!


四、在Model类所在的包(此处为:com/liberD/hibernate/model/)添加映射配置文件Student.hbm.xml。格式如下:


<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
??????? "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
??????? "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.liberD.hibernate.model">
??? <class name="Student" table="student">
??????? <!-- 如果是Model类和表名一样,则table属性可以省略 -->
??????? <id name="id" column="id"></id>
??????? <!--
??????????? 指定数据库主键,
??????????? name指定Model类中的属性,column属性指定表中的列。如果是Model类属性和列名一样,则column属性可以省略
??????? -->
??????? <property name="name" column="name"></property><!-- 指定其他属性 -->
??????? <property name="age" column="age"></property>
??? </class>
</hibernate-mapping>


五、在src目录中添加配置文件hibernate.cfg.xml。


<?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>
??????? <!-- Database connection settings -->
??????? <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
??????? <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>
??????? <property name="connection.username">root</property>
??????? <property name="connection.password">adai119</property>

??????? <!--
??????????? JDBC connection pool (use the built-in) Hibernate自带的连接池,一般不用,注释掉!
??????? -->
??????? <!--? <property name="connection.pool_size">1</property> -->

??????? <!-- SQL dialect(方言)用于指定何种数据库,可以在Hibernate的文档中查到 -->
??????? <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

??????? <!-- Enable Hibernate's automatic session context management -->
??????? <!--
??????????? <property name="current_session_context_class">thread</property>
??????? -->

??????? <!-- Disable the second-level cache? 二级缓存,优化Hibernate时再说!-->
??????? <property name="cache.provider_class">
??????????? org.hibernate.cache.NoCacheProvider
??? </property>

??????? <!-- Echo all executed SQL to stdout 是否显示生成的SQL生成语句!开发时,一定要显示,方便调试! -->
??????? <property name="show_sql">true</property>

??????? <!--
??????????? Drop and re-create the database schema on startup hbm是Hibernate
??????????? Maping ddl是数据定义语句 这句话的意思是:是否要Hibernate指定映射成数据定义语句。
??????? -->
??????? <!--? <property name="hbm2ddl.auto">update</property> -->
??????? <property name="myeclipse.connection.profile">MySQL</property>

??????? <mapping resource="com/liberD/hibernate/model/Student.hbm.xml" />
??? </session-factory>
</hibernate-configuration>


六、写测试类测试:


package com.liberD.hibernate.model;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.Session;

public class StudentTest {

??? public static void main(String[] args) {
??????? Student s = new Student();
??????? s.setId(1);
??????? s.setName("s1");
??????? s.setAge(1);

??????? Configuration cfg = new Configuration();
??????? SessionFactory sf = cfg.configure().buildSessionFactory();// 默认读取的是sre下面的hibernate.cfg.xml
??????? Session session = sf.openSession();
??????? session.beginTransaction();
??????? session.save(s);
??????? session.getTransaction().commit();
??????? session.close();

??? }
}


七、输出结果:

Hibernate: insert into student (name, age, id) values (?, ?, ?)


总结反思:

其中,出现了两个小问题,这里也说明一下,
1、请在<mapping resource="ModelClassName.hbm.xml" />标签中填写上诉类的映射。否则会出错。具体见实例。
2、注意密码等等基本配置问题!????

调试了这两个小问题,让我花了半天时间!!希望以后注意!

?

?

更多内容,请见我的博客:“地瓜哥”,http://www.diguage.com/

?

?

?

读书人网 >软件架构设计

热点推荐