package db; import java.io.Serializable; import javax.jdo.annotations.Unique; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class User { @Id @GeneratedValue(strategy=GenerationType.AUTO) private Long id; public User() { } public User(String name, String pass) { this.name = name; this.pass = pass; } public Long getId() { return id; } @Unique private String name; private String pass; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPass() { return pass; } public void setPass(String pass) { this.pass = pass; } }
package db; import java.io.Serializable; import javax.jdo.annotations.Unique; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class User { @Id @GeneratedValue(strategy=GenerationType.AUTO) private Long id; public User() { } public User(String name, String pass) { this.name = name; this.pass = pass; } public Long getId() { return id; } @Unique private String name; private String pass; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPass() { return pass; } public void setPass(String pass) { this.pass = pass; } }
@Entity
@Id @GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
@Unique private String name;
The @Unique annotation marks the field that should have a unique value, when trying to write an object to the database, whose value of the field marked with this annotation coincides with the previously recorded database object will throw an exception. Thus, we make it impossible to register several users with the same name. package db; import javax.persistence.*; public class UserDBAdapter { EntityManagerFactory emf; EntityManager em; public UserDBAdapter() { emf = Persistence.createEntityManagerFactory("$objectdb/db/usr.odb"); em = emf.createEntityManager(); } @Override protected void finalize(){ em.close(); emf.close(); } public boolean persistUser(User u) { try { em.getTransaction().begin(); em.persist(u); em.getTransaction().commit(); em.clear(); return true; } catch(PersistenceException e){ System.out.println(e.getMessage()); em.clear(); em.close(); emf.close(); return false; } } public User getUserById(long id) { User u1 = em.find(User.class, id); return u1; } public User getUserByName(String name) { TypedQuery q = em.createQuery("SELECT u FROM User u WHERE u.name = :name", User.class); User u1 = (User) q.setParameter("name", name).getSingleResult(); return u1; } public boolean autentificate(String name, String pass) throws PersistenceException{ TypedQuery q = em.createQuery("SELECT u FROM User u WHERE u.name = :name AND u.pass = :pass", User.class); try { User u1 = (User)q.setParameter("name", name).setParameter("pass", pass).getSingleResult(); return true; } catch(PersistenceException e) { em.clear(); em.close(); emf.close(); throw new PersistenceException("username not found or password is invalid"); } } }
package db; import javax.persistence.*; public class UserDBAdapter { EntityManagerFactory emf; EntityManager em; public UserDBAdapter() { emf = Persistence.createEntityManagerFactory("$objectdb/db/usr.odb"); em = emf.createEntityManager(); } @Override protected void finalize(){ em.close(); emf.close(); } public boolean persistUser(User u) { try { em.getTransaction().begin(); em.persist(u); em.getTransaction().commit(); em.clear(); return true; } catch(PersistenceException e){ System.out.println(e.getMessage()); em.clear(); em.close(); emf.close(); return false; } } public User getUserById(long id) { User u1 = em.find(User.class, id); return u1; } public User getUserByName(String name) { TypedQuery q = em.createQuery("SELECT u FROM User u WHERE u.name = :name", User.class); User u1 = (User) q.setParameter("name", name).getSingleResult(); return u1; } public boolean autentificate(String name, String pass) throws PersistenceException{ TypedQuery q = em.createQuery("SELECT u FROM User u WHERE u.name = :name AND u.pass = :pass", User.class); try { User u1 = (User)q.setParameter("name", name).setParameter("pass", pass).getSingleResult(); return true; } catch(PersistenceException e) { em.clear(); em.close(); emf.close(); throw new PersistenceException("username not found or password is invalid"); } } }
public boolean persistUser(User u)
method is used to add a new user to the database. Operations that change the state of objects in the database, such as adding a new object, must be performed inside a transaction that is opened by the em.getTransaction().begin()
method, and closed by the em.getTransaction().commit()
method ( this is when the object is physically saved in the database ).public User getUserByName(String name)
and public boolean autentificate(String name, String pass)
em.find(User.class, id)
which allows you to find an object of the User class here by its primary key (id).Source: https://habr.com/ru/post/145679/
All Articles