hibernate并没有学全,视频教程大致看了一半多些,这次做简单的论坛,想采用SSH来做,这样可以把三个框架都巩固,第一个晚上的主要想法就是搭环境,想使用注释的方式配置,这样可以少写些XML。
开发工具:Eclipse 3.4 没用MyEclipse,这个版本本身就可以做WEB
使用Tomcat6.0
数据库 MSSQL2000,实际上用的是MSDE
新建一个Dynamic Web project
把jar包拷到WEB-INF/lib目录下所要的文件有:
hibernate3.jar
hibernate-entitymanager.jar
ejb3-persistence.jar
hibernate-annotations.jar
hibernate-commons-annotations.jar
antlr-2.7.6.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
javassist-3.9.0.GA.jar
jta-1.1.jar
slf4j-api-1.5.8.jar
ehcache-1.2.3.jar
sqljdbc4.jar
slf4j-log4j12-1.5.0.jar
log4j-1.2.15.jar
commons-logging.jar
新建一个Class User 如下:
package bbs.domain.bean;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Table;
import javax.persistence.Id;
import org.hibernate.annotations.GenericGenerator;
@Entity
@Table(name="[user]")
public class User implements Serializable{
/**
*
*/
private static final long serialVersionUID = -8764161543446505211L;
private int id;
private String userId;
private String nickName;
private String userName;
private String password;
private String email;
private String qq;
@Id
@GeneratedValue(generator="native")
@GenericGenerator(strategy="native", name="native")//name="native"是指前一句指定的自定义的主键生成方法名称
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Column(name="user_id" ,length=16,unique=true, nullable=false)
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
@Column(name="nikename",length=50,nullable=false)
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
@Column(name="username",length=50)
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Column(length=32,nullable=false)
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Column(length=20)
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Column(length=20)
public String getQq() {
return qq;
}
public void setQq(String qq) {
this.qq = qq;
}
}
测试单元:
package junit.test;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
import bbs.domain.bean.User;
public class UserTest {
@Test
public void runtest(){
Configuration conf = new AnnotationConfiguration().configure();
SessionFactory sf = conf.buildSessionFactory();
Session s =null;
User user = new User();
user.setUserId("abc");
user.setNickName("小妹");
user.setPassword("123456");
Transaction ts;
try {
s = sf.openSession();
ts = s.beginTransaction();
s.save(user);
ts.commit();
} catch (HibernateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if (s!=null)
s.close();
}
}
}
hibernate配置如下:
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
<property name="connection.url">jdbc:sqlserver://localhost:1433;databaseName=bbs;</property>
<property name="connection.username">sa</property>
<property name="connection.password">123</property>
<property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
<property name="hbm2ddl.auto">update</property>
<property name="show_sql">true</property>
<!-- 罗列所有的持久化类 -->
<mapping class="bbs.domain.bean.User"/>
</session-factory>
</hibernate-configuration>
几点说明:
拷jar包,根据一些教程上说的拷,运行的时候还是会提示少了,看出错信息一般都知道要加一些什么包,spring下的lib目录中一般都找得到
包名用bbs.domain.bean是因为想用领域对象模型,不过按我现在的水平是做不清楚的,所以把domain分成bean和其他一些包,bean下面的类基本上都是数据类
花了一个晚上的时间,主要是,学hibernate的时候是用配置映射文件的方式做的,现在用注解,要了解一下如何使用,另外,花了更多的时间,发现注解不起作用,原因有:
1、配置文件中没有<mapping class/>
2、在网上找了N久,才发现Configuration conf = new AnnotationConfiguration().configure();这句应该用AnnotationConfiguration,而使用映射文件是用Configuration()。
浪花费了这么多时间,一些N低级的错误,呵,也许这就是初学者吧。
本文分享了使用SSH(Spring、Struts、Hibernate)搭建简单论坛的过程,包括环境配置、使用注解方式减少XML配置,以及通过具体例子展示Hibernate操作。

被折叠的 条评论
为什么被折叠?



