第一天:写一个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低级的错误,呵,也许这就是初学者吧。
- 第一天:写一个User类,测试一下hibernate环境,花了一个晚上,真菜
- 最后一个晚上了...
- 又想起来了,写一个开心一下
- 放松了一个晚上,继续~~
- android环境下写了一个测试Java类,带有main方法,可是无法运行
- 花了一个晚上美化了我的Blog!靓晒~~!
- 为了一个符号忙了一个晚上
- 写了一个自动加链接的工具, 关于SEO的,测试一下效果
- 学习JAVA第一天!配置环境变量,安装myeclipse,写了一个HelloWorld!
- 晚上看了会html写了一个简单的不能再简单的网页…
- 刚看了一个程序,并写了一下,然后用Java 再写了一下
- 一个花了我两个晚上的低级错误
- 第一天的晚上
- 折腾了一个晚上,终于发表了第一篇学习技术博客,
- 试用版获得手记(二)-- 两款平台对比报告,#个人原创# 写了一个晚上
- 哈哈,800万的数据终于导完了,晚上写了一个Template的小例子
- 整理了一个晚上的QQ
- 《一个晚上我输了整个世界》
- 3DS MAX 显示法线方向
- 马云语录
- 菜鸟编程学习日志:对于节省编程时间之己见
- CentOS 5.3上yum安装Apache+php+Mysql+phpMyAdmin
- 典型ARM体系结构介绍
- 第一天:写一个User类,测试一下hibernate环境,花了一个晚上,真菜
- 数据结构练习:堆栈
- 今天新做的网沾
- 用c++编写科学计算器
- Delphi 数据类型
- 我的Photoshop大师之路(二)
- ARM7TDMI中TDMI的中文意思
- struts整合Spring(2种方法)
- C++ 定时作业