Hibernate第一次配置与使用(图文)

这次实验大部分都是依照http://edu.51cto.com/lesson/id-19282.html里的视频讲解来做的,感觉这位老师讲得很详细,声音也挺好听的哈,我很喜欢呢大笑


实验环境:

MyEclipse 7
Tomcat 5
Hibernate 4.3.10
MySQL

Hibernate库导入

创建工程之后,就该导入Hibernate库啦,因为我用的是MyEclipse 7,如果是按照如下工程自动导入方式,就只有Hibernate 3版本可以使用。

工程自动添加




手动添加

因为我想用Hibernate4,所以就要自己手动添加啦。
需要添加的库都下图所示,在required目录中
添加库的方式是:右键点击工程,之后选择Build Path->Configure Build Path->Libraries->Add External Jars

MySQL 库导入

首先要去网上下一个mysql-connector-java,里边的mysql-connector-java-5.1.7-bin.jar就是我们要添加的jar啦。


News.java类的编写

设置如下4个属性,并生成相应的get和set方法
package hibernate;

import java.sql.Date;

public class News {
	private int id;
	private String title;
	private String author;
	private Date date;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getAuthor() {
		return author;
	}
	public void setAuthor(String author) {
		this.author = author;
	}
	public News(String author, String title, Date date) {
		super();
		this.author = author;
		this.date = date;
		this.title = title;
	}
	public News(){
		
	}
	public String toString(){
		return "News [id = " + id + ", title = " + title + "author = " + author + "date = "+ date + "]"; 
	}
	public Date getDate() {
		return date;
	}
	public void setDate(Date date) {
		this.date = date;
	}
}

Hibernate.cfg.xml配置数据库

在src目录下新建一个类型为Hibernate Configuration File,然后添加如下内容,我选用的是MySQL数据库。
<hibernate-configuration>
    <session-factory>      
    	<!-- 配置连接数据库的基本信息 -->    
        <property name="connection.url">jdbc:mysql://localhost:3306/mysql</property>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.username">root</property>
        <property name="connection.password">root</property>
		
		<!-- 配置Hibernate的基本信息 --> 
		<!-- 数据库使用的方言-->
		<property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
		
		<!-- 执行操作时是否在控制台Console打印SQL语句-->
		<property name="show_sql">true</property>
		
		<!-- 是否对SQL进行格式化 -->
                <property name="format_sql">true</property>
        
                <!-- 自动生成数据表的策略,update可以自动创建表 -->
		<property name="hbm2ddl.auto">update</property>
		
		<!-- 类与表的映射文件的注册,类为News类,表在包hibernate中的News.hdb.xml进行详细设置 -->
		<mapping resource = "hibernate/News.hdb.xml"/>
    </session-factory>
</hibernate-configuration>
关于上面的信息与它们的值可以在如下目录中的hibernate.properties里边选择相关的数据库进行查看。





对象关系映射文件hbm.xml




在hibernate包里边创建一个News.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 package="org.yjj">
	<class name = "hibernate.News" table = "NEWS">
		<!-- 指定主键,name表示News类中的属性名,column则是数据库中的名字 -->
		<!-- type可以使用Java中的java.lang.Integer,也可以直接使用hibernate中的int或Integer,hibernate可以实现自动转换 -->
		<id name = "id" column = "ID" type = "java.lang.Integer">
			<!-- 指定主键的生成方式,native表示使用数据库本地方法创建-->
			<!-- assign则表示由用户设定-->
			<generator class = "native"></generator>
		</id>
		
		<property name = "title" type = "java.lang.String">
			<column name = "TITLE"></column>
		</property>
				
		<property name = "author" type = "java.lang.String">
			<column name = "AUTHOR"></column>
		</property>
		
		<property name = "date" type = "java.sql.Date">
			<column name = "DATE"></column>
		</property>
	</class>
</hibernate-mapping>


Test.java测试类
import java.sql.Date;
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;



    public class Test {

        /**
         * @param args
         */
        private SessionFactory sessionFactory;
        private Configuration configuration;
        private ServiceRegistry serviceRegistry;
        private Transaction transaction;
        private Session session;
        public Test(){
        	//1.创建一个SessionFactory
            sessionFactory = null;
            
            //1).创建一个Configuration,对应hibernate配置文件和对象关系映射信息
            configuration = new Configuration().configure();
            //2).创建一个ServiceRegistry对象,hibernate4.x新加的
            serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
            //3).
            sessionFactory = configuration.buildSessionFactory(serviceRegistry);
            
            //2.创建一个session对象
            session = sessionFactory.openSession();
            //3.创建事物对象
            transaction = session.beginTransaction();
        }
        public void destroy(){
            transaction.commit();
            session.close();
            sessionFactory.close();
        }
        public void test(){                 
            
        	News news = new News();
            news.setAuthor("yjj");
            news.setDate(new Date(new java.util.Date().getTime()));
            news.setTitle("Title");
            
            session.save(news);
        }
        public void get(){
        	News news = (News)session.get(News.class, 0);
            System.out.println("result" + news.toString());
        }
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Test t = new Test();
            t.test();
            t.get();
            t.destroy();

        }

    }



执行结果:

从下边可以看到表开始是没有的,Hibernate执行的SQL语句则最下的蓝框所示。

接着切换到数据库工作空间看看


可以看到我的MySQL数据库中已经多了一个news表啦!


右键这个表名,点击generate->Select Statement,会出现SQL语句界面,然后执行它,就可以在下面看到结果啦,看,不仅表出现了,还已经有一个数据添加在里边了吧!






JDK版本差异错误:

提示如下错误了 

Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file

解决办法可见下面链接:

http://zhidao.baidu.com/link?url=9OCUAscuBp2NcpKlFudKmvoG-Tb4EO0Y11UHFhouPZj-L7Gfv9pkHCZ8PFTfTmvPzq19vwXsktlKj7EWvhHzIa

造成这种过错是ni的支撑Tomcat运行的JDK版本与支撑application运行的JDK版本不一致导致的.
把它们的JDK版本改成一致步骤如下:
1.Window --> Preferences -->Java --> compiler中的compiler compliance level对应的下拉菜单中选择JDK版本.
2.Window --> Preferences -->MyEclipse --> Servers -->Tomcat --> Tomcat n.x -->JDK中的Tomcat JDK name下的下拉菜单中选择自身电脑上安装的JDK版本(必需与步骤1中的JDK版本一致).

如果要在MyEclipse中添加jdk,则是
Window --> Preferences -->Java -->Installed JREs->add

JDK安装在哪里

可是我已经忘记JDK在哪里了,我的JDK安装在哪里呢?如下,在控制面板里边有哦



tomcat的JDK设置


提示添加JRE不行,需要添加JDK尴尬原来我没装JDK呀!




没有加DTD导致的XML问题

ERROR: HHH000196: Error parsing XML (2) : cvc-elt.1: Cannot find the declaration of element 'hibernate-mapping'

解决办法可见http://blog.csdn.net/ouvidia/article/details/7426872

加上这一句<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

就好了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值