To te mandando um exemplo:
Classe acesso
@Entity
public class Acesso {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
int id;
private String login;
private String senha;
private boolean administrador;
public boolean isAdministrador() {
return administrador;
}
public void setAdministrador(boolean administrador) {
this.administrador = administrador;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String logar() {
Session session = HibernateUtil.openSession();
AcessoDAO acessoDAO = new AcessoDAO(session);
return acessoDAO.verificaAutenticacao(this);
}
public void salvar() {
Session session = HibernateUtil.openSession();
AcessoDAO acessoDAO = new AcessoDAO(session);
acessoDAO.salvaUsuario(this);
}
public void deletar() {
Session session = HibernateUtil.openSession();
AcessoDAO acessoDAO = new AcessoDAO(session);
acessoDAO.excluiUsuario(this);
}
}
classe AcessoDAO
public class AcessoDAO {
private Session session;
private Logger logger = Logger.getLogger(Acesso.class);
public AcessoDAO(Session session) {
logger.info("Construtor" + session);
this.session = session;
}
/**
* @verifica se o usuário está autorizado para logar no sistema
*/
@SuppressWarnings("unchecked")
public String verificaAutenticacao(Acesso acesso) {
logger.info("HQL" + acesso.getLogin());
Query query = session
.createQuery("select acesso from Acesso as acesso where acesso.login = :login and acesso.senha = :senha");
query.setParameter("senha", acesso.getSenha());
query.setParameter("login", acesso.getLogin());
Acesso acesso2 = (Acesso) query.uniqueResult();
if (acesso2 == null) {
return "erro";
} else {
if (acesso2.isAdministrador()){
return "administrador";
}else
return "usuario";
}
}
/**
* @verifica salva um novo usuário no sistema
*/
public void salvaUsuario(Acesso acesso) {
session.saveOrUpdate(acesso);
}
/**
* @verifica exclui um usuário no sistema
*/
public void excluiUsuario(Acesso acesso) {
session.delete(acesso);
}
@SuppressWarnings("unchecked")
public Acesso selecionaUsuario(Acesso acesso) {
// TODO Auto-generated method stub
return (Acesso) session.load(Acesso.class, acesso.getLogin());
}
}
Classes de configurações do Hibernate
GERABANCO
public class GeraBanco {
public static void main(String[] args) {
Configuration configuration = new AnnotationConfiguration();
configuration.configure();
SchemaExport schemaExport = new SchemaExport(configuration);
schemaExport.create(true, true);
}
}
InsereDados.java
public class InsereDados {
public static void main(String[] args) {
Configuration configuration = new AnnotationConfiguration();
configuration.configure();
SchemaExport schemaExport = new SchemaExport(configuration);
schemaExport.create(true, true);
// Fabrica de Sessão
SessionFactory sessionFactory = configuration.buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
Acesso acesso = new Acesso();// ainda é transient
acesso.setLogin("Eduardo");
acesso.setSenha("123");
acesso.setAdministrador(false);
session.saveOrUpdate(acesso);
Dados dados = new Dados();
dados.setCidadeDestino("SP");
dados.setCidadeOrigem("SP");
dados.setClienteDestino("Edu");
session.saveOrUpdate(dados);
transaction.commit();
session.close();
sessionFactory.close();
}
}
HibernateUtil.java
public class HibernateUtil {
private static ThreadLocal<Session> sessions;
private static SessionFactory sessionFactory;
static {
sessionFactory = new AnnotationConfiguration().configure()
.buildSessionFactory();
sessions= new ThreadLocal<Session>();
}
public static Session openSession() {
return sessionFactory.openSession();
}
public static Session getCurrentSession() {
if (sessions.get() == null) {
sessions.set(openSession());
}
return sessions.get();
}
public static void closeCurrentSession() {
getCurrentSession().close();
sessions.set(null);
}
}
HibernateSessionFilter.java
public class HibernateSessionFilter implements Filter {
public void doFilter(ServletRequest servletRequest,
ServletResponse servletResponse, FilterChain filterChain) throws ServletException {
try {
HibernateUtil.getCurrentSession().beginTransaction();//é obrigado estar
filterChain.doFilter(servletRequest, servletResponse);
HibernateUtil.getCurrentSession().getTransaction().commit();
} catch (Exception e) {
HibernateUtil.getCurrentSession().getTransaction().rollback();
throw new ServletException(e);
} finally {
HibernateUtil.closeCurrentSession();
}
}
public void destroy() {
// TODO Auto-generated method stub
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
E o Hibernate Config.xml
<!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="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="hibernate.connection.url">
jdbc:mysql://localhost/projetojsfgrecco
</property>
<property name="hibernate.connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<!-- usar C3P0 Pool de conexões-->
<property name="hibernate.c3p0.min_size">1</property>
<property name="hibernate.c3p0.max_size">10</property>
<property name="hibernate.c3p0.maxIdleTime">200</property>
<property name="hibernate.c3p0.timeout">180</property>
<property name="hibernate.c3p0.idle_test_period">100</property>
<property name="hibernate.c3p0.max-statements">50</property>
<!-- Cache 2 nível-->
<property name="hibernate.cache.provider_class">
org.hibernate.cache.EhCacheProvider</property>
<mapping class="br.com.grecco.acesso.Acesso"/>
<mapping class="br.com.grecco.dados.Dados"/>
</session-factory>
</hibernate-configuration>
Qq coisa posta aí sua dúvida, eu montei esse login baseado no curso do FJ26 da Caelum que foi excelente.
:D