Eclipse C/S系统结合Hibernate 3实例开发分享
来源:互联网 发布:皇族white淘宝店 编辑:程序博客网 时间:2024/05/17 16:43
在日常java C/S系统开发,我接触的很少使用Hibernate做为MVC中数据库映射开发,所以我没事的时候做了一个C/S结合Hibernate数据库映射开发的实例,下面我将Hibernate在Eclipse中的配置详细写出来,很多网上接触到的文章都是错的,只是增加上了Hibernate.jar,其他都没有介绍。
开始配置:
A:下载Hibernate3.jar必备包。
B:下载HibernateSynchronizer-3.1.9.zip,Hibernate与数据库的映射插件。
C:下载Hibernate3其他附属包,不然在后面开发的时候会不断出现缺包的异常。
D:上面所有的包可以到这个地址下载:http://download.csdn.net/detail/captaingan/3716351
E:解压上面下载的包,将其中的HibernateSynchronizer-3.1.9.zip包解压,将底层的文件夹 com.hudson.hibernatesynchronizer_3.1.9拷贝到Eclipse安装目录的Plugin目录中。
F:重启Eclipse,
G:新建一个C/S项目,我的工程是使用的SWT作为我的前台开发的。添加前面的JAR文件到工程中。
src目录下log4j.properties是必须的:
### direct log messages to stdout ### log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n log4j.rootLogger=warn, stdout log4j.logger.org.hibernate=error
H:选中项目File-NEW-OTHERS-HIBERNATE(如果前面插件安装成功后,会出现)-Hibernate Configuration File
Next
填上数据库相关信息
-> Finish 就会出现下图的hibenrate配置XML
再然后
File - New - Other - Hibernate - Hibernate Mapping File - Next 出现下图:
Table Pattern 和 Schema Pattern不要填写,然后 Refresh,在Table中会出现数据库中的表格,选中需要映射的表格,然后Finish,出现下图情况:
选中上面的SbdWorkerTab.hbm.xml 右键 选中 Hibernate Synchronizer -> Synchronizer File出现上图出现的需要 BaseSbdWorkerTab.java和SbdWorkerTab.java两个文件
再次上Hibernate Synchronizer ->Add Mapping Refference添加映射配置到hibernate.cfg.xml文件中。
然后添加自己的DAO访问方法我的方法如下:
package com.dao;import java.util.ArrayList;import java.util.List;import org.hibernate.Query;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.hibernate.classic.Session;import com.ORM.SbdWorkerTab;public class RegisterDao implements WorkerDaoInterface {public void addWorker(SbdWorkerTab sbdWorkerTab) {Configuration config = new Configuration().configure();SessionFactory sFactory = config.buildSessionFactory();Session session = sFactory.openSession();Transaction transaction = session.beginTransaction();session.save(sbdWorkerTab);transaction.commit();session.close();}public List<SbdWorkerTab> listWorker() {List<SbdWorkerTab> sworkerList = new ArrayList<SbdWorkerTab>();String HQL = "Select s From SbdWorkerTab as s";Configuration config = new Configuration().configure();SessionFactory sessionFactory = config.buildSessionFactory();Session session = sessionFactory.openSession();Query query = session.createQuery(HQL);Transaction trans = session.beginTransaction();sworkerList = query.list();trans.commit();return sworkerList;}@Overridepublic void deleteWorker(String workerId) {Configuration config = new Configuration().configure();SessionFactory sessionFactory = config.buildSessionFactory();Session session = sessionFactory.openSession();Transaction trans = session.beginTransaction();SbdWorkerTab sbdWorkerTab = (SbdWorkerTab) session.load(SbdWorkerTab.class, workerId);session.delete(sbdWorkerTab);trans.commit();}@Overridepublic void updateWorker(SbdWorkerTab sbdWorkerTab) {Configuration config = (new Configuration()).configure();SessionFactory sessionFactory = config.buildSessionFactory();Session session = sessionFactory.openSession();Transaction transaction = session.beginTransaction();session.update(sbdWorkerTab);transaction.commit();}}
package com.dao;import java.util.List;import com.ORM.SbdWorkerTab;public interface WorkerDaoInterface {public void addWorker(SbdWorkerTab sbdWorkerTab);public List<SbdWorkerTab> listWorker();public void deleteWorker(String workerId);public void updateWorker(SbdWorkerTab sbdWorkerTab);}
在前台访问前面的DAO方法就可以了。
这里是分割线
========================2015年分割线===========================
下面是所有代码
RegisterDao
package com.dao;import java.util.ArrayList;import java.util.List;import org.hibernate.Query;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.hibernate.classic.Session;import com.ORM.SbdWorkerTab;public class RegisterDao implements WorkerDaoInterface {public void addWorker(SbdWorkerTab sbdWorkerTab) {Configuration config = new Configuration().configure();SessionFactory sFactory = config.buildSessionFactory();Session session = sFactory.openSession();Transaction transaction = session.beginTransaction();session.save(sbdWorkerTab);transaction.commit();session.close();}public List<SbdWorkerTab> listWorker() {List<SbdWorkerTab> sworkerList = new ArrayList<SbdWorkerTab>();String HQL = "Select s From SbdWorkerTab as s";Configuration config = new Configuration().configure();SessionFactory sessionFactory = config.buildSessionFactory();Session session = sessionFactory.openSession();Query query = session.createQuery(HQL);Transaction trans = session.beginTransaction();sworkerList = query.list();trans.commit();return sworkerList;}@Overridepublic void deleteWorker(String workerId) {Configuration config = new Configuration().configure();SessionFactory sessionFactory = config.buildSessionFactory();Session session = sessionFactory.openSession();Transaction trans = session.beginTransaction();SbdWorkerTab sbdWorkerTab = (SbdWorkerTab) session.load(SbdWorkerTab.class, workerId);session.delete(sbdWorkerTab);trans.commit();}@Overridepublic void updateWorker(SbdWorkerTab sbdWorkerTab) {Configuration config = (new Configuration()).configure();SessionFactory sessionFactory = config.buildSessionFactory();Session session = sessionFactory.openSession();Transaction transaction = session.beginTransaction();session.update(sbdWorkerTab);transaction.commit();}}
WorkerDaoInterface
package com.dao;import java.util.List;import com.ORM.SbdWorkerTab;public interface WorkerDaoInterface {public void addWorker(SbdWorkerTab sbdWorkerTab);public List<SbdWorkerTab> listWorker();public void deleteWorker(String workerId);public void updateWorker(SbdWorkerTab sbdWorkerTab);}
SbdWorkerTab
package com.ORM;import com.ORM.base.BaseSbdWorkerTab;public class SbdWorkerTab extends BaseSbdWorkerTab {private static final long serialVersionUID = 1L;public SbdWorkerTab () {super();}public SbdWorkerTab (java.lang.String workerId,java.lang.String workerName,java.lang.String workerPassword,java.lang.String workerRole) {super (workerId,workerName,workerPassword,workerRole);}}SbdWorkerTab.hbm.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" ><hibernate-mapping package="com.ORM"><class name="SbdWorkerTab" table="sbd_worker_tab"><meta attribute="sync-DAO">false</meta><id name="Id" type="string" column="worker_id" /><property name="WorkerName" column="worker_name" type="string"not-null="true" length="15" /><property name="WorkerPassword" column="worker_password"type="string" not-null="true" length="12" /><property name="WorkerRole" column="worker_role" type="string"not-null="true" length="15" /></class></hibernate-mapping>
BaseSbdWorkerTab
package com.ORM.base;import java.io.Serializable;/** * This is an object that contains data related to the sbd_worker_tab table. * Do not modify this class because it will be overwritten if the configuration file * related to this class is modified. * * @hibernate.class * table="sbd_worker_tab" */public abstract class BaseSbdWorkerTab implements Serializable {public static String REF = "SbdWorkerTab";public static String PROP_WORKER_ROLE = "WorkerRole";public static String PROP_WORKER_NAME = "WorkerName";public static String PROP_ID = "Id";public static String PROP_WORKER_PASSWORD = "WorkerPassword";public BaseSbdWorkerTab () {initialize();}public BaseSbdWorkerTab (java.lang.String id) {this.setId(id);initialize();}public BaseSbdWorkerTab (java.lang.String id,java.lang.String workerName,java.lang.String workerPassword,java.lang.String workerRole) {this.setId(id);this.setWorkerName(workerName);this.setWorkerPassword(workerPassword);this.setWorkerRole(workerRole);initialize();}protected void initialize () {}private int hashCode = Integer.MIN_VALUE;private java.lang.String id;private java.lang.String workerName;private java.lang.String workerPassword;private java.lang.String workerRole;public java.lang.String getId () {return id;}public void setId (java.lang.String id) {this.id = id;this.hashCode = Integer.MIN_VALUE;}public java.lang.String getWorkerName () {return workerName;}public void setWorkerName (java.lang.String workerName) {this.workerName = workerName;}public java.lang.String getWorkerPassword () {return workerPassword;}public void setWorkerPassword (java.lang.String workerPassword) {this.workerPassword = workerPassword;}public java.lang.String getWorkerRole () {return workerRole;}public void setWorkerRole (java.lang.String workerRole) {this.workerRole = workerRole;}public boolean equals (Object obj) {if (null == obj) return false;if (!(obj instanceof com.ORM.SbdWorkerTab)) return false;else {com.ORM.SbdWorkerTab sbdWorkerTab = (com.ORM.SbdWorkerTab) obj;if (null == this.getId() || null == sbdWorkerTab.getId()) return false;else return (this.getId().equals(sbdWorkerTab.getId()));}}public int hashCode () {if (Integer.MIN_VALUE == this.hashCode) {if (null == this.getId()) return super.hashCode();else {String hashStr = this.getClass().getName() + ":" + this.getId().hashCode();this.hashCode = hashStr.hashCode();}}return this.hashCode;}public String toString () {return super.toString();}}
下面是SWT的界面代码
MudifyUI
package com.ui;import org.eclipse.swt.widgets.Dialog;public class MudifyUI extends Dialog {protected Object result;protected Shell shell;private Text text;private Text text_1;private Text text_2;private Text text_3;private SbdWorkerTab sbdWorkerTab;/** * Create the dialog. * * @param parent * @param style */public MudifyUI(Shell parent, int style, SbdWorkerTab sbdWorkerTab) {super(parent, style);this.sbdWorkerTab = sbdWorkerTab;setText("SWT Dialog");}/** * Open the dialog. * * @return the result */public Object open() {createContents();shell.open();shell.layout();Display display = getParent().getDisplay();while (!shell.isDisposed()) {if (!display.readAndDispatch()) {display.sleep();}}return result;}/** * Create contents of the dialog. */private void createContents() {shell = new Shell(getParent(), SWT.CLOSE | SWT.MIN | SWT.TITLE| SWT.APPLICATION_MODAL);shell.setSize(337, 177);shell.setText(getText());shell.setLayout(new FillLayout(SWT.HORIZONTAL));{Composite composite = new Composite(shell, SWT.NONE);composite.setLayout(new GridLayout(3, false));{System.out.println("实体对象中的工号为:" + sbdWorkerTab.getId());}new Label(composite, SWT.NONE);{Label label = new Label(composite, SWT.RIGHT);label.setText("工号:");}text = new Text(composite, SWT.BORDER);GridData gd_text = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1);gd_text.widthHint = 144;text.setLayoutData(gd_text);text.setEditable(false);text.setText(sbdWorkerTab.getId());new Label(composite, SWT.NONE);{Label label = new Label(composite, SWT.RIGHT);label.setText("姓名:");}{text_1 = new Text(composite, SWT.BORDER);GridData gd_text_1 = new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1);gd_text_1.widthHint = 223;text_1.setLayoutData(gd_text_1);text_1.setText(sbdWorkerTab.getWorkerName());}new Label(composite, SWT.NONE);{Label label = new Label(composite, SWT.RIGHT);label.setText("密码:");}{text_2 = new Text(composite, SWT.BORDER);text_2.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));text_2.setText(sbdWorkerTab.getWorkerPassword());}new Label(composite, SWT.NONE);{Label label = new Label(composite, SWT.RIGHT);label.setText("工作角色:");}{text_3 = new Text(composite, SWT.BORDER);text_3.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));text_3.setText(sbdWorkerTab.getWorkerRole());}new Label(composite, SWT.NONE);{Button button = new Button(composite, SWT.NONE);button.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));button.addSelectionListener(new SelectionAdapter() {@Overridepublic void widgetSelected(SelectionEvent e) {shell.dispose();}});button.setText("取消");}{Button button = new Button(composite, SWT.NONE);button.addSelectionListener(new SelectionAdapter() {@Overridepublic void widgetSelected(SelectionEvent e) {sbdWorkerTab = new SbdWorkerTab();sbdWorkerTab.setId(text.getText());sbdWorkerTab.setWorkerName(text_1.getText());sbdWorkerTab.setWorkerPassword(text_2.getText());sbdWorkerTab.setWorkerRole(text_3.getText());RegisterDao registerDao = new RegisterDao();registerDao.updateWorker(sbdWorkerTab);shell.dispose();}});button.setText("更新");}}}}
RegistertUI
package com.ui;import org.eclipse.swt.widgets.Display;import org.eclipse.swt.widgets.Shell;import org.eclipse.swt.layout.FillLayout;import org.eclipse.swt.SWT;import org.eclipse.swt.widgets.Composite;import org.eclipse.swt.widgets.Label;import org.eclipse.swt.widgets.Text;import org.eclipse.swt.widgets.Button;import org.eclipse.swt.events.SelectionAdapter;import org.eclipse.swt.events.SelectionEvent;import com.ORM.SbdWorkerTab;import com.dao.RegisterDao;public class RegistertUI {protected Shell shell;private Text idText;private Text nameText;private Text passText;public static void main(String[] args) {try {RegistertUI window = new RegistertUI();window.open();} catch (Exception e) {e.printStackTrace();}}public void open() {Display display = Display.getDefault();createContents();shell.open();shell.layout();while (!shell.isDisposed()) {if (!display.readAndDispatch()) {display.sleep();}}}/** * Create contents of the window. */protected void createContents() {shell = new Shell();shell.setSize(386, 264);shell.setText("SWT Application");shell.setLayout(new FillLayout(SWT.HORIZONTAL));Composite composite = new Composite(shell, SWT.NONE);Label label = new Label(composite, SWT.NONE);label.setBounds(64, 39, 49, 13);label.setText("\u5DE5\u53F7");idText = new Text(composite, SWT.BORDER);idText.setBounds(138, 33, 139, 19);Label label_1 = new Label(composite, SWT.NONE);label_1.setBounds(64, 73, 49, 13);label_1.setText("\u59D3\u540D");nameText = new Text(composite, SWT.BORDER);nameText.setBounds(138, 67, 139, 19);Label label_2 = new Label(composite, SWT.NONE);label_2.setBounds(64, 108, 49, 13);label_2.setText("\u5BC6\u7801");passText = new Text(composite, SWT.BORDER);passText.setBounds(138, 102, 139, 19);Button button = new Button(composite, SWT.NONE);button.addSelectionListener(new SelectionAdapter() {@Overridepublic void widgetSelected(SelectionEvent e) {String id = idText.getText();String name = nameText.getText();String password = passText.getText();SbdWorkerTab sbdWorkerTab = new SbdWorkerTab();sbdWorkerTab.setId(id);sbdWorkerTab.setWorkerName(name);sbdWorkerTab.setWorkerPassword(password);sbdWorkerTab.setWorkerRole("Hibernate C/S1");RegisterDao dao = new RegisterDao();dao.addWorker(sbdWorkerTab);}});button.setBounds(116, 151, 68, 23);button.setText("\u63D0\u4EA4");Button button_1 = new Button(composite, SWT.NONE);button_1.setBounds(193, 151, 68, 23);button_1.setText("\u53D6\u6D88");}}
ShowInfoUI
package com.ui;import java.util.ArrayList;import java.util.List;import org.eclipse.swt.widgets.Display;import org.eclipse.swt.widgets.Shell;import org.eclipse.swt.layout.FillLayout;import org.eclipse.swt.SWT;import org.eclipse.swt.widgets.Composite;import org.eclipse.swt.widgets.Table;import org.eclipse.swt.widgets.TableColumn;import org.eclipse.swt.widgets.TableItem;import org.eclipse.swt.layout.grouplayout.GroupLayout;import org.eclipse.swt.widgets.Button;import org.eclipse.swt.events.SelectionAdapter;import org.eclipse.swt.events.SelectionEvent;import com.ORM.SbdWorkerTab;import com.dao.RegisterDao;public class ShowInfoUI {protected Shell shell;private Table table;private SbdWorkerTab sbdWorkerTab = new SbdWorkerTab();private String workerId = "";/** * Launch the application. * * @param args */public static void main(String[] args) {try {ShowInfoUI window = new ShowInfoUI();window.open();} catch (Exception e) {e.printStackTrace();}}/** * Open the window. */public void open() {Display display = Display.getDefault();createContents();shell.open();shell.layout();while (!shell.isDisposed()) {if (!display.readAndDispatch()) {display.sleep();}}}/** * Create contents of the window. */protected void createContents() {shell = new Shell();shell.setSize(527, 364);shell.setText("SWT Application");shell.setLayout(new FillLayout(SWT.HORIZONTAL));Composite composite = new Composite(shell, SWT.NONE);table = new Table(composite, SWT.BORDER | SWT.CHECK| SWT.FULL_SELECTION | SWT.HIDE_SELECTION);table.addSelectionListener(new SelectionAdapter() {@Overridepublic void widgetSelected(SelectionEvent e) {TableItem[] tableItems = table.getSelection();workerId = tableItems[0].getText(0);sbdWorkerTab.setId(tableItems[0].getText(0));sbdWorkerTab.setWorkerName(tableItems[0].getText(1));sbdWorkerTab.setWorkerPassword(tableItems[0].getText(2));sbdWorkerTab.setWorkerRole(tableItems[0].getText(3));System.out.println(sbdWorkerTab.getId());System.out.println(sbdWorkerTab.getWorkerName());System.out.println(sbdWorkerTab.getWorkerPassword());System.out.println(sbdWorkerTab.getWorkerRole());MudifyUI mudifyUI = new MudifyUI(shell, SWT.NONE, sbdWorkerTab);mudifyUI.open();}});table.setHeaderVisible(true);table.setLinesVisible(true);TableColumn tableColumn = new TableColumn(table, SWT.CENTER);tableColumn.setWidth(100);tableColumn.setText("\u5DE5\u53F7");TableColumn tableColumn_1 = new TableColumn(table, SWT.LEFT);tableColumn_1.setWidth(100);tableColumn_1.setText("\u59D3\u540D");TableColumn tableColumn_2 = new TableColumn(table, SWT.LEFT);tableColumn_2.setWidth(100);tableColumn_2.setText("\u5BC6\u7801");TableColumn tableColumn_3 = new TableColumn(table, SWT.LEFT);tableColumn_3.setWidth(100);tableColumn_3.setText("\u89D2\u8272");Button button = new Button(composite, SWT.NONE);button.addSelectionListener(new SelectionAdapter() {@Overridepublic void widgetSelected(SelectionEvent e) {table.setItemCount(0);List<SbdWorkerTab> workerList = new ArrayList<SbdWorkerTab>();workerList = (new RegisterDao()).listWorker();if (workerList != null && workerList.size() > 0) {for (int i = 0; i < workerList.size(); i++) {TableItem item = new TableItem(table, SWT.NONE);item.setText(new String[]{workerList.get(i).getId(),workerList.get(i).getWorkerName(),workerList.get(i).getWorkerPassword(),workerList.get(i).getWorkerRole()});}}}});button.setText("\u663E\u793A\u4FE1\u606F");Button button_1 = new Button(composite, SWT.NONE);button_1.addSelectionListener(new SelectionAdapter() {@Overridepublic void widgetSelected(SelectionEvent e) {RegisterDao registerDao = new RegisterDao();if (workerId != null && !workerId.equals("")) {registerDao.deleteWorker(workerId);}}});button_1.setText("删除信息");GroupLayout gl_composite = new GroupLayout(composite);gl_composite.setHorizontalGroup(gl_composite.createParallelGroup(GroupLayout.LEADING).add(gl_composite.createSequentialGroup().add(77).add(button).add(32).add(button_1).addContainerGap(278, Short.MAX_VALUE)).add(gl_composite.createSequentialGroup().add(5).add(table,GroupLayout.DEFAULT_SIZE, 508, Short.MAX_VALUE).add(6)));gl_composite.setVerticalGroup(gl_composite.createParallelGroup(GroupLayout.TRAILING).add(gl_composite.createSequentialGroup().addContainerGap().add(table, GroupLayout.DEFAULT_SIZE, 268, Short.MAX_VALUE).add(18).add(gl_composite.createParallelGroup(GroupLayout.BASELINE).add(button).add(button_1)).addContainerGap()));composite.setLayout(gl_composite);}}
下面是运行效果:
更新过后的工程源代码下载地址:http://download.csdn.net/detail/captaingan/8346195
以前旧的工程代码我将删除掉。
多谢大家阅读我的这篇博客,很久以前都想修改这篇博客,4年后的今天,2015年,才来完善这个文章,抱歉。哈哈。
- Eclipse C/S系统结合Hibernate 3实例开发分享
- idea 结合maven开发hibernate实例
- eclipse 开发c/s框架
- C语言结合汇编开发系统内核
- Eclipse + jboss 结合UML,Struts,Hibernate开发J2EE
- 水晶报表开发实例!C/S结构
- Eclipse开发基于Hibernate的web系统
- 结合HSQLDB测试hibernate实例
- 初探MIS开发中C/S模式和B/S模式的结合策略
- 关于常规B/S、C/S系统开发实现原理
- eclipse hibernate实例
- eclipse hibernate入门实例
- 第8章Hibernate开发实例----图书管理系统
- appfuse结合eclipse开发流程
- eclipse插件开发 ,GEF,RCP,SWT/JFACE,draw2d,c/s
- Hibernate开发实例
- 三层C/S 结构及图书查询系统的开发
- C/S系统开发框架-高级版3.0
- 乐phone新手十大实用技巧
- 活着不容易啊~
- 结构体成员的内存对齐
- 纠结的我
- 乐phone不用刷机拿root的方法
- Eclipse C/S系统结合Hibernate 3实例开发分享
- 开源电子商务OFBIZ:商品分类与管理(三)
- android ContextMenu 长按菜单 整理 摘
- 006.openJTAG的使用
- 广州 《软件测试安全实战训练》圆满结束!
- jQuery 文档操作方法
- Android 中关于Cursor类的介绍
- 问题集
- 3g modem调试