📜  EJB-Access数据库(1)

📅  最后修改于: 2023-12-03 15:30:36.162000             🧑  作者: Mango

EJB-Access数据库介绍

什么是EJB ?

EJB是Enterprise Java Bean 的缩写,是Java EE规范中的一部分,它定义了一些API和服务,以创建托管,安全的,可伸缩的和高效的应用程序。

EJB中的访问数据库

在EJB应用程序中,访问数据库是非常常见的。EJB提供了两种访问数据库的方式:

1. 使用JDBC

JDBC是Java Database Connectivity的缩写,是Java平台中访问关系型数据库的标准API。使用JDBC连接数据库,需要定义数据库连接URL、用户名和密码等信息,创建一个Connection对象并打开它,然后执行SQL语句。

String url = "jdbc:mysql://localhost:3306/test"; //数据库链接地址
String user = "root"; //数据库用户名
String password = "123456"; //数据库密码
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
    conn = DriverManager.getConnection(url, user, password);
    stmt = conn.prepareStatement("SELECT * FROM user WHERE name = ?");
    stmt.setString(1, "张三");
    rs = stmt.executeQuery();
    while (rs.next()) {
        System.out.println(rs.getString(1));
        System.out.println(rs.getString(2));
    }
} catch (SQLException e) {
    e.printStackTrace();
} finally {
    try { rs.close(); } catch (Exception e) {}
    try { stmt.close(); } catch (Exception e) {}
    try { conn.close(); } catch (Exception e) {}
}
2. 使用JPA

JPA是Java Persistence API的缩写,是Java EE规范中定义的一套ORM(对象关系映射)标准,通过JPA可以将Java类映射到关系型数据库中的表,实现对数据库的访问。在EJB中使用JPA,需要先定义实体类,然后使用EntityManager对象进行持久化操作。

@Entity
@Table(name = "user")
public class User implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    @Column(name = "name")
    private String name;
    @Column(name = "age")
    private int age;
    public int getId() { return id; }
    public void setId(int id) { this.id = id; }
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public int getAge() { return age; }
    public void setAge(int age) { this.age = age; }
}

@LocalBean
@Stateless
public class UserEJB {
    @PersistenceContext
    private EntityManager em;
    public User getUserByName(String name) {
        Query q = em.createQuery("SELECT u FROM User u WHERE u.name = :name");
        q.setParameter("name", name);
        List<User> list = q.getResultList();
        if (list.isEmpty())
            return null;
        else
            return list.get(0);
    }
}
EJB中的事务管理

EJB提供了事务管理的支持,它允许开发者将多个数据库操作组合成一个事务,以确保它们要么全部成功,要么全部失败回滚。使用EJB的事务管理,可以通过@TransactionAttribute注解控制事务属性。

@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void addUser(User user) {
    em.persist(user);
}
EJB中的安全性管理

EJB提供了安全性管理的支持,开发者可以通过EJB的注解来声明安全性角色及其权限,然后通过应用程序服务器来控制和限制访问。

@RolesAllowed("admin")
public void deleteUser(User user) {
    em.remove(user);
}
总结

EJB是为企业级应用程序提供支持的一套JavaEE规范,它提供了事务管理、安全性管理等功能,使得JavaEE应用程序的开发、管理和部署变得更加简单和高效。在访问数据库方面,EJB提供了JDBC和JPA两种方式供开发者选择,可以根据实际的需求选择适合自己的方式进行操作。