hibernate如何实现数据备份和数据恢复
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hibernate如何实现数据备份和数据恢复相关的知识,希望对你有一定的参考价值。
参考技术A 打开腾讯手机管家-更多-微云网盘进入微云界面后我们会发现微云界面有三种不同的功能选项,分别是网盘相册和传输三种功能。 进入到微云网盘中用Q登陆,我们能上传我们的资料等,下次可以在别处用Q登陆微云根据不同需求进行不同的选择和使用,能很好的保护我们的资料
如何使用 Struts2 和 Hibernate 删除和修改数据
【中文标题】如何使用 Struts2 和 Hibernate 删除和修改数据【英文标题】:How to Delete and Modify Datas using Struts2 and Hibernate 【发布时间】:2017-10-05 20:30:39 【问题描述】:我创建了一个 jsp 页面,通过 hibernate 框架和 struts2 向我显示了我的 mysql 数据库中包含的医生列表(法语为 medecin)。
我有一个删除按钮 supprimer
(法语),用于删除医生,还有一个按钮 modifier
,用于编辑医生的数据。
编辑按钮 modifier
将获取所选医生的所有数据(id、nom、prenom 等)并将其放入表格中,以便我可以更新它。
ListMed 行动给我这个。
ListedesMedecins.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sb" uri="/struts-bootstrap-tags"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Listes des Medecins</title>
</head>
<body>
<jsp:include page="accueil.jsp"/>
<h1>Listes des Medecins</h1>
<s:if test="Medecin.size() > 0">
<table border="1px" cellpadding="8px">
<tr>
<th>id</th>
<th>Nom</th>
<th>Prenom</th>
<th>contact</th>
<th>specialite</th>
</tr>
<s:iterator value="Medecin">
<tr>
<td><s:property value="idmed" /></td>
<td><s:property value="nom" /></td>
<td><s:property value="prenom" /></td>
<td><s:property value="contact" /></td>
<td><s:property value="specialite"/></td>
<td><a href="<s:url action="Modmed" namespace="/Modmed"/>"> Modifier </a> </td>
<td><a href="<s:url action="Supmed" namespace="/Supmed"/>"> Supprimer </a> </td>
</tr>
</s:iterator>
</s:if>
</table>
</body>
</html>
我的班级 MedecinDAO 使用所需的方法(选择、更新、删除、列表)
public Medecin getMedecin(Integer idMedecin)
log.info("********** Debut getMedecin MedecinDAO **********");
Medecin Medecin = null;
Session session = SessionFactoryUtil.getInstance().openSession();
try
Medecin = (Medecin) session.get(Medecin.class, idMedecin);
return Medecin;
catch (Exception e)
e.printStackTrace();
log.fatal(e.getMessage());
return null;
finally
session.close();
log.info("********** Fin getMedecin MedecinDAO **********");
public boolean saveMedecin(Medecin Medecin)
log.info("********** Debut saveMedecin MedecinDAO **********");
Session session = SessionFactoryUtil.getInstance().openSession();
Transaction trans = session.beginTransaction();
try
session.save(Medecin);
trans.commit();
return true;
catch (Exception e)
e.printStackTrace();
log.fatal(e.getMessage());
trans.rollback();
return false;
finally
session.close();
log.info("********** Fin saveMedecin MedecinDAO **********");
public boolean updateMedecin(Medecin Medecin)
log.info("********** Debut updateMedecin MedecinDAO **********");
Session session = SessionFactoryUtil.getInstance().openSession();
Transaction trans = session.beginTransaction();
try
session.update(Medecin);
trans.commit();
return true;
catch (Exception e)
e.printStackTrace();
log.fatal(e.getMessage());
return false;
finally
session.close();
log.info("********** Fin updateMedecin MedecinDAO **********");
public boolean deleteMedecin(Medecin Medecin)
log.info("********** Debut deleteMedecin MedecinDAO **********");
Session session = SessionFactoryUtil.getInstance().openSession();
try
Transaction trans = session.beginTransaction();
session.delete(Medecin);
trans.commit();
return true;
catch (Exception e)
e.printStackTrace();
log.fatal(e.getMessage());
return false;
finally
session.close();
log.info("********** Fin deleteMedecin MedecinDAO **********");
public List<Medecin> allmedecin()
List<Medecin> medecin = null;
Session session = SessionFactoryUtil.getInstance().openSession();
String registr = "from Medecin";
Query query = session.createQuery(registr);
medecin=query.list();
return medecin;
最后是我的动作类,formMedAction.java
//getters,setters...
//this method is for adding Medecin/doctors
public String Ajoutmed()
MedecinDAO medDAO= MedecinDAO.getInstance();
Medecin M = new Medecin();
M.setIdmed(idmed);
M.setNom(nom);
M.setPrenom(prenom);
M.setContact(contact);
M.setSpecialite(specialite);
medDAO.saveMedecin(M);
return SUCCESS;
// return list of all medecin in the table
public String Listmed() throws Exception
MedecinDAO medDAO = MedecinDAO.getInstance();
Medecin = medDAO.allmedecin();
return SUCCESS;
// Method I created to delete the data, but I'm not sure if it correct
public String Supmed()
MedecinDAO medDAO = MedecinDAO.getInstance();
Medecin M = new Medecin();
M.getIdmed();
M.getNom();
M.getPrenom();
M.getContact();
M.getSpecialite();
medDAO.deleteMedecin(M);
return SUCCESS;
public string Modmed ()
//dont know what to do for the modifier/edit action , need your help
return SUCCESS;
需要你的帮助谢谢
编辑!
在 MedecinDAO 中找到使用此代码删除医生的方法:
public Medecin deleteMedecin(Integer idmed)
log.info("********** Debut deleteMedecin MedecinDAO **********");
Session session = SessionFactoryUtil.getInstance().openSession();
Transaction trans = session.beginTransaction();
Medecin m = (Medecin) session.load(Medecin.class, idmed);
session.delete(m);
trans.commit();
return m;
并将其添加到动作类中
public String Supmed()
MedecinDAO medDAO = MedecinDAO.getInstance();
Medecin m = new Medecin();
m = medDAO.deleteMedecin(getIdmed());
return SUCCESS;
并在 JSP 按钮动作中
<td><a href="<s:url action="Supmed" namespace="/pages"><s:param name="idmed" value="%idmed"></s:param></s:url>"> Supprimer </a> </td>
现在我需要知道如何编辑
【问题讨论】:
【参考方案1】:好的,我找到了解决方案。
如果你想获取选中的对象参数(id , name 什么的) 您只需要添加此代码。 (以我为例,我需要:idmed、nom prenom、contact、specialite)
<td><a class="btn btn-warning" href="<s:url action="editmed" namespace="/pages"> <s:param name="idmed" value="%idmed" ></s:param><s:param name="nom" value="%nom" ></s:param><s:param name="prenom" value="%prenom" ></s:param><s:param name="contact" value="%contact" ></s:param><s:param name="specialite" value="%specialite" ></s:param></s:url>"> Modifier </a> </td>
您创建一个编辑操作
public String editmed()
return SUCCESS;
然后您创建一个新页面,例如 edit.jsp 并在 struts 文本字段(选择等)中设置参数的值。
<s:form action="Modmed" id="Modmed" namespace="/pages" theme="bootstrap" cssClass="bs-example form-horizontal">
<s:textfield label="Identifiant" type="Number" min="1" name="idmed" value="%idmed"/>
<s:textfield label="Nom" name="nom" value="%nom" />
<s:textfield label="Prenom" name="prenom" value="%prenom" />
<s:textfield label="Contact" name="contact" value="%contact" />
<s:textfield label="Spécialité" name="specialite" value="%specialite"/>
<div class="col-lg-9 col-lg-offset-3">
<s:submit cssClass="btn btn-primary" value="Sauvegarder"/>
</div>
</s:form>
它应该可以工作!
【讨论】:
【参考方案2】:Edit 应该与 delete 类似。首先你可以得到Medecin
你想更新的对象:
Medecin med = (Medecin) session.get(Medecin.class, idmed);
med.setNom("Andrea"); //set new values of your columns
设置要更新的属性后:
public Medecin updateMedecin(Medecin updatedObject)
log.info("********** Debut updateMedecin MedecinDAO **********");
Session session = SessionFactoryUtil.getInstance().openSession();
Transaction trans = session.beginTransaction();
session.save(updatedObject);
trans.commit();
return updatedObject;
已编辑:如果您需要在新的 JSP 页面中设置所选 Medecin 对象的值,首先您需要一个表单来更新列,其次您必须将 idMed 传递给表单页面,
用于编辑操作的 JSP 按钮:
<td><a href="<s:url action="edit" namespace="/edit"><s:param name="idmed" value="%idmed"></s:param></s:url>"> Edit</a> </td>
表单页面:
<s:form action="update">
<s:push value="medecin">
<s:hidden name="idmed" />
<s:textfield name="name" label="User Name" value="%medecin.nom />
<s:textfield name="surname" label="Sur Name" value="%medecin.prenom />
<s:submit />
</s:push>
</s:form>
最后,你可以从 jsp 中获取 id 参数:
request.getParameter("idmed")
【讨论】:
thx 但是如何在新的 JSP 页面中设置选定的 Medecin 对象的值,在表单中,例如在文本字段中设置 idmed 、 nom 等的值,例如,在更新之前?跨度> 好的,谢谢,但仍然面临问题。我想我在编辑 Action 时出错了。 public String edit() String param = ServletActionContext.getRequest().getParameter("idmed");返回成功; ,这就是我所做的,但我有一个空白页,我只有标题,表格没有显示。我创建了另一个 jsp 页面,在以上是关于hibernate如何实现数据备份和数据恢复的主要内容,如果未能解决你的问题,请参考以下文章
hibernate 中的ORM是如何与数据库实现存储和查询的
如何使用 JPA/hibernate EntityManager 和 EJB3.0 实现泛型?