過去我在后端管理持久狀態的方式是使用 Spring 的@Entity. 基本上,我定義了一個像這樣的常規 java 類:
@Entity
@Table(name = "users")
class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id")
public Long user_id;
@Column(name = "email")
public String email;
}
然后我可以使用 Hibernate 來檢索托管的 java 物件:
User user = userFactory.getUserFromId(3L); // uses Hibernate internally to get a managed instance
user.email = "[email protected]"; // gets auto-save to mysql database
這非常方便,因為我可以只更改欄位而無需明確擔心保存資料。這也很方便,因為我可以指定許多欄位用作索引,因此我可以非常快速地搜索匹配的電子郵件名稱。
我將如何使用 NodeJS 做同樣的事情?我需要使用 node,因為我的團隊根本不熟悉 Java。我希望能夠快速存盤復雜的 json 物件,在記憶體中有一個快取版本,理想情況下可以定期永久存盤資料。
我目前的計劃是為此使用 Redis。獲取用戶的物件應該是這樣的:
class User {
constructor(json) {
this.json = json
}
async save() {
await redis.set(JSON.stringify(this.json));
}
}
async function user(id) {
let json = JSON.parse(await redis.get("user-" id));
return User(json);
}
u3 = await user(3);
u3.json.email = "[email protected]";
u3.save();
要按名稱獲取用戶,我會創建自己的索引(從電子郵件到用戶 ID 的映射),并可能將此索引存盤在 redis 中。
所有這些看起來都很笨拙,感覺就像我正在重新實作基本的資料庫功能。那么在我這樣做之前,是不是有不同的方法可以在js中很好的管理json物件,讓編碼體驗和在Spring中有些相同呢?
uj5u.com熱心網友回復:
您需要的是一個ORM,它是每種語言的工具,可以將您的物件映射到資料庫記錄中。
通過快速搜索,您可以找到在NodeJS世界中非常流行的 Sequalize。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/415012.html
標籤:
上一篇:如何解決MultiResourceItemReaderSpringBatch中的ClassCastException
