小编Ali*_*tin的帖子

Terraform 约定:我应该将“常量”声明为变量还是局部变量?

示例:在 Azure 中,我正在同一区域中部署多个资源组、托管磁盘、网络接口等。

我想声明一个“区域”原语(“常量”),所有这些资源都将引用它。其中哪一个遵循惯例?

a)变量.tf:

variable "region" {
    type = string
    default = "a-place"
}
Run Code Online (Sandbox Code Playgroud)

b) 当地人.tf

locals {
    region = "a-place"
}
Run Code Online (Sandbox Code Playgroud)

我自然会选择声明为本地人。仅当我期望从环境变量、命令行获得(或被覆盖)一个值,或者我正在创建一个模块时,我才会使用变量。然而,我还没有在任何示例中看到 local 被用于“声明常量”,这使我认为存在使用范围非常有限的 local 的约定(例如,主要用于创建可与 和count结构一起使用的结构for_each)。

在有人将此标记为基于意见之前掩饰我的背部:我问的是公约是什么,而不是您认为公约应该是什么。

后续问题:如果此示例涵盖 IP 地址、资源名称前缀等而不是区域,答案是否会有所不同?(该公约是否只涵盖特定领域?)

terraform

15
推荐指数
1
解决办法
1万
查看次数

Spring Boot:如何使用多个模式并在运行时为每个请求动态选择使用哪个模式

前提:我选择这样做是因为我最终可能会有几千个模式,每个模式(除其他外)有一个包含几百万个条目的表。另一种选择是(除其他外)在一个模式中拥有一个包含数十亿条目的表。

详细说明这个问题的最佳方法是提供一个简单的例子。考虑以下:

用户.java

@Entity(name = "user")
public class User {
    @Id
    @GeneratedValue
    @Column(name = "id")
    private Long id;

    @Column(name = "username")
    private String username;

    // getters and setters...
}
Run Code Online (Sandbox Code Playgroud)

UserDao.java

@Repository
public interface UserDao extends CrudRepository<User, Long> {}
Run Code Online (Sandbox Code Playgroud)

用户服务.java

public interface UserService {
    User getUser(Long id);
}
Run Code Online (Sandbox Code Playgroud)

UserServiceBean.java

@Transactional
@Service
public class UserServiceBean implements UserService {
    @Autowired
    private UserDao dao;

    @Override
    public User getUser(Long id) {
        return dao.findOne(id);
    }
}
Run Code Online (Sandbox Code Playgroud)

用户控制器.java

@RestController
public class UserController {

    @Autowired
    private UserService userService; …
Run Code Online (Sandbox Code Playgroud)

java database-design spring-boot

6
推荐指数
2
解决办法
8608
查看次数

JPA Hibernate:如何限制自引用实体的获取深度

我将写一个例子只是为了降低复杂性:


人类.java

@Entity
@Table(name = "human")
@DynamicInsert(value = true)
@DynamicUpdate(value = true)
public class Human {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Column(nullable = false, name = "name")
    private String name;

    @ManyToOne(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
    @JoinColumn(name = "parent_id")
    private Human parent;

    @OneToMany(fetch=FetchType.LAZY, mappedBy ="parent")
    private Collection<Human> children;

    // getters and setters ...
}
Run Code Online (Sandbox Code Playgroud)

HumanDao.java

@Repository
public interface HumanDao  extends CrudRepository<Human, Long>{
    @Query(value = 
            "SELECT * " +
            "FROM humans " + 
            "WHERE parent_id = ?1",
            nativeQuery = true)
    public Iterable<Human> getChildren(Long …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa spring-boot

5
推荐指数
0
解决办法
2843
查看次数

标签 统计

java ×2

spring-boot ×2

database-design ×1

hibernate ×1

jpa ×1

terraform ×1