intellij idea编辑器是我刚刚接触了两个星期左右的开发工具,说实话这个开发工具很强大,集成了很多功能,估计要花一段较长时间才能基本上掌握它的功能,其中它集成了maven这个插件,现在它是很火的管理JavaEE项目的框架,我是刚刚接触很多东西还不是很懂,不过学了一点知道这个框架确实牛逼,管理方便,打包也方便。建议学JavaWEB和JavaEE的IT从事者学学它,因为现在很多公司都已经用到了这个maven的框架了。我用idea结合maven开发hibernate遇到了bug个,由于我是初用idea,初学maven和hibernate,被这个bug搞了两天后才解决,这过程寻求了三位师兄都没解决,被网上的同行网友给解决,在这里我非常的谢谢他,也谢谢其中一位帮我和指导我的同行网友。好了现在我就结合bug说一下用idea14.0.2结合maven3.0开发hibernate3.0的入门级例子吧。
步骤:
1建立maven项目:
到这里一个maven的项目建好了,现在是已引入hibernate相关包了。
2首先该项目会自动创建pom.xml文件,只要你在这文件配置,就可以自动的引入对应版本的jar包了。以下是hibernate的pom.xml配置:
4.0.0
com.scau.beyondboy
Hibernate
1.0-SNAPSHOT
jar
Hibernate
http://maven.apache.org
UTF-8
junit
junit
3.8.1
test
org.hibernate
hibernate-core
3.6.0.Final
log4j
log4j
1.2.16
org.slf4j
slf4j-api
1.6.1
org.slf4j
slf4j-nop
1.6.4
javassist
javassist
3.11.0.GA
mysql
mysql-connector-java
5.1.17
org.slf4j
slf4j-nop
1.6.4
3创建文件和选择hibernate框架如图:
4相关配置和类的代码:
hibernate.cfg.xml的配置:
com.mysql.jdbc.Driver
jdbc:mysql://localhost/hibernate
root
32147
20
1
5000
100
3000
2
true
org.hibernate.dialect.MySQLDialect
update
true
true
现在main/resources下创建com.scau.beyondboy.domain的这四个文件夹,然后在创建News.hbm.xml,该代码:
持久化对象放在main/java/com/scau/beyondboy/domain下,该News类的代码:
package com.scau.beyondboy.domain;
public class News
{
//消息类的标识属性
private Integer id;
//消息标题
private String title;
//消息内容
private String content;
//消息全部内容,由系统根据公式生成
private String fullContent;
//id属性的setter和getter方法
public void setId(Integer id)
{
this.id = id;
}
public Integer getId()
{
return this.id;
}
//title属性的setter和getter方法
public void setTitle(String title)
{
this.title = title;
}
public String getTitle()
{
return this.title;
}
//content属性的setter和getter方法
public void setContent(String content)
{
this.content = content;
}
public String getContent()
{
return this.content;
}
//fullContent属性的setter和getter方法
public void setFullContent(String fullContent)
{
this.fullContent = fullContent;
}
public String getFullContent()
{
return this.fullContent;
}
}
生成操作工厂的类是放在main/java下,该NewsManager类的代码:
import com.scau.beyondboy.domain.News;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class NewsManager
{
public static void main(String[] args) throws Exception
{
//实例化Configuration,这行代码默认加载hibernate.cfg.xml文件
Configuration conf = new Configuration().configure();
//以Configuration创建SessionFactory
SessionFactory sf = conf.buildSessionFactory();
//实例化Session
Session sess = sf.openSession();
//开始事务
Transaction tx = sess.beginTransaction();
//创建消息实例
News n = new News();
//设置消息标题和消息内容
n.setTitle("scau");
n.setContent("beyondboy");
//保存消息
sess.save(n);
/*News n2 = (News) sess.get(News.class, 1);
//输出fullContent属性值
System.out.println(n2.getFullContent());*/
//提交事务
tx.commit();
//关闭Session
sess.close();
}
}
5: 配置数据库:
6最后一步编译执行:
到这里,基本步骤做完了,一下是测试结果图:
说完了这些,我就说说我遇到了一个非常细小的bug,搞了我两天才解决,以下是错误hibernate.cfg.xml配置和错误运行:
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/hibernate
root
32147
org.hibernate.dialect.MySQLInnoDBDialect
update
true
true
后来一位同行网友指出是以下方言的配置错了:
org.hibernate.dialect.MySQLInnoDBDialect
org.hibernate.dialect.MySQLDialect
就不会有错了,在这里我真很感谢那位It网友,要不是他我到现在还不知道错在哪里。