Java Object 和 Entity 都是 Java 編程中的重要概念。但是它們之間的區(qū)別是什么呢?
首先來(lái)看 Java Object。它是 Java 編程中的基礎(chǔ)概念之一,可以理解為 Java 中任何對(duì)象的超類(lèi)。Java Object 包含很多通用的方法,例如 toString()、hashCode()、equals() 等等。因此,所有的 Java 對(duì)象都可以調(diào)用這些方法。另外,Java Object 還可以作為泛型類(lèi)型參數(shù)來(lái)使用。
public class MyObject { private String name; private int age; // 省略 getter 和 setter 方法 @Override public String toString() { return "MyObject{" + "name='" + name + '\'' + ", age=" + age + '}'; } } public class Main { public static void main(String[] args) { MyObject obj = new MyObject(); obj.setName("張三"); obj.setAge(20); System.out.println(obj.toString()); // 輸出 MyObject{name='張三', age=20} } }
接下來(lái)是 Entity。Entity 是通過(guò) ORM(對(duì)象關(guān)系映射)框架來(lái)實(shí)現(xiàn)持久化的 Java 對(duì)象。簡(jiǎn)單來(lái)說(shuō),就是將一個(gè) Java 對(duì)象映射到數(shù)據(jù)庫(kù)中的一張表中。為了實(shí)現(xiàn)這種映射,Entity 類(lèi)通常會(huì)定義屬性和對(duì)應(yīng)的表中的列名,同時(shí)還可以定義一些與數(shù)據(jù)表操作相關(guān)的方法。
@Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "name") private String name; @Column(name = "age") private int age; // 省略 getter 和 setter 方法以及其他的方法 } public interface UserDao extends JpaRepository{ // 省略方法 } public class Main { public static void main(String[] args) { ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); UserDao userDao = context.getBean(UserDao.class); User user = new User(); user.setName("李四"); user.setAge(25); userDao.save(user); User user2 = userDao.findByName("張三"); System.out.println(user2); // 輸出 User{id=1, name='張三', age=20} } }
總的來(lái)說(shuō),Java Object 是 Java 編程的基礎(chǔ)概念,而 Entity 通常用于實(shí)現(xiàn)數(shù)據(jù)庫(kù)持久化,兩者的作用和使用場(chǎng)景是不同的。