最近,在学校的一个实验室学习一些java方向的知识,基于Javaweb的管理系统
由于以前关注移动开发方向,所以现在才学习web方向的东西
根据自己的理解和书上的知识。写了一个基于struts2+Hibernate的简易学生管理系统
软件为:win7旗舰版+MyEclipse10.5
创建的项目目录如下图:
加入的struts2+Hibernate的包为
首先创建一个test数据库,然后创一一个名为stuinfo的表
INSERT INTO stuinfo
(`id`, `name`, `sex`, `age`, `weight`)
VALUES
('111', '111', '女', 1, 1);
INSERT INTO stuinfo
(`id`, `name`, `sex`, `age`, `weight`)
VALUES
('2011553', '蜗牛', '男', 20, 72);
Hibernate框架是与数据库打交道的,所以我们要为项目配置Hibernate 名字为hibernate.cfg.xml
org.hibernate.dialect.MySQLDialect
com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/test
root
root
再新建一个学生pojo类Stuinfo,包括姓名。学号等等信息
package PO;
public class Stuinfo implements java.io.Serializable {
private String id;
private String name;
private String sex;
private int age;
private float weight;
public String getId() {
return this.id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return this.sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return this.age;
}
public void setAge(int age) {
this.age = age;
}
public float getWeight() {
return this.weight;
}
public void setWeight(float weight) {
this.weight = weight;
}
}
再根据Hibernate什么功能生成一个Stuinfo.hbm.xml文件
这样我们存储的时候就可以把Stuinfo作为一个实体类存到数据库就可以了。
接下来,我们再写一个HibernateSessionFactory类,用来获取Session对象。这是一个单例对象。就像C语言中的全局变量一样。随处可用
package addHibernateFile;
import javax.swing.JOptionPane;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateSessionFactory {
private static SessionFactory sessionFactory;
private static Configuration configuration=new Configuration();
public HibernateSessionFactory(){
}
static{
try{
Configuration configure = configuration.configure("hibernate.cfg.xml");
sessionFactory=configure.buildSessionFactory();
}catch(Exception e){
message("生成SessionFactoyr失败:"+e);
}
}
public static Session getSession(){
return sessionFactory.openSession();
}
public static void message(String mess){
int type=JOptionPane.YES_NO_OPTION;
String title="提示信息";
JOptionPane.showMessageDialog(null, mess, title, type);
}
}
根据Configuration类得到SessionFactory对象。然后通过它后去Session对象。这样的话,以后用session的地方我们就可以new一个HibernateSessionFactory对象,然后通过getSession()方法获取session。
再写我们的dao层,数据访问层StudentDao.java
package Dao;
import addHibernateFile.HibernateSessionFactory;
import PO.Stuinfo;
import java.util.List;
import javax.swing.JOptionPane;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
public class StudentDao {
private Transaction transaction;
private Session session;
private Query query;
public StudentDao(){
}
public boolean saveInfo(Stuinfo info){
try{
session=HibernateSessionFactory.getSession();
transaction=session.beginTransaction();
session.save(info);
transaction.commit();
session.close();
return true;
}catch(Exception e){
message("saveInfo.error:"+e);
e.printStackTrace();
return false;
}
}
public List findInfo(String type,Object value){
session=HibernateSessionFactory.getSession();
try{
transaction=session.beginTransaction();
String queryString="from Stuinfo as model where model."+type+"=?";
query=session.createQuery(queryString);
query.setParameter(0, value);
List list=query.list();
transaction.commit();
session.close();
return list;
}catch(Exception e){
message("findInfo.error:"+e);
e.printStackTrace();
return null;
}
}
public List findAllInfo(){
session=HibernateSessionFactory.getSession();
try{
transaction=session.beginTransaction();
String queryString="from Stuinfo";
query=session.createQuery(queryString);
List list=query.list();
transaction.commit();
session.close();
return list;
}catch(Exception e){
message("findInfo.error:"+e);
e.printStackTrace();
return null;
}
}
public boolean deleteInfo(String id){
try{
session=HibernateSessionFactory.getSession();
transaction=session.beginTransaction();
Stuinfo info=new Stuinfo();
info=(Stuinfo)session.get(Stuinfo.class, id);
session.delete(info);
transaction.commit();
session.close();
return true;
}catch(Exception e){
message("deleteInfo.error:"+e);
e.printStackTrace();
return false;
}
}
public boolean updateInfo(Stuinfo info){
try{
session=HibernateSessionFactory.getSession();
transaction=session.beginTransaction();
session.update(info);
transaction.commit();
session.close();
return true;
}catch(Exception e){
message("updateInfo.error:"+e);
e.printStackTrace();
return false;
}
}
public void message(String mess){
int type=JOptionPane.YES_NO_OPTION;
String title="提示信息";
JOptionPane.showMessageDialog(null, mess, title, type);
}
}
这就是我们的数据访问层。下一篇我们讲它的业务逻辑层