第一天:写一个User类,测试一下hibernate环境,花了一个晚上,真菜

来源:互联网 发布:淘宝直销店是什么意思 编辑:程序博客网 时间:2024/05/15 17:49

 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低级的错误,呵,也许这就是初学者吧。

 

原创粉丝点击